aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch b/target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch
new file mode 100644
index 0000000000..71f16e9e60
--- /dev/null
+++ b/target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch
@@ -0,0 +1,40 @@
+From 91c2f372e3f70ab5b5afff5af60348fd5656d739 Mon Sep 17 00:00:00 2001
+From: Camelia Groza <camelia.groza@nxp.com>
+Date: Wed, 10 Oct 2018 17:30:18 +0300
+Subject: [PATCH] staging/fsl_qbman: stop using current_kernel_time()
+
+The current_kernel_time() call was removed in [1] in order to avoid
+overflows in 2038. Use ktime_get_coarse_real_ts64() instead.
+
+[1] 9765164 ("y2038: remove unused time interfaces")
+
+Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
+---
+ drivers/staging/fsl_qbman/qbman_driver.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/drivers/staging/fsl_qbman/qbman_driver.c
++++ b/drivers/staging/fsl_qbman/qbman_driver.c
+@@ -57,7 +57,10 @@ static __init int qbman_init(void)
+ };
+ struct qm_mcr_queryfq_np np;
+ int err, retry = CONFIG_FSL_QMAN_INIT_TIMEOUT;
+- struct timespec nowts, diffts, startts = current_kernel_time();
++ struct timespec64 nowts, diffts, startts;
++
++ ktime_get_coarse_real_ts64(&startts);
++
+ /* Loop while querying given fqid succeeds or time out */
+ while (1) {
+ err = qman_query_fq_np(&fq, &np);
+@@ -68,8 +71,8 @@ static __init int qbman_init(void)
+ pr_err("QMan: I/O error, continuing anyway\n");
+ break;
+ }
+- nowts = current_kernel_time();
+- diffts = timespec_sub(nowts, startts);
++ ktime_get_coarse_real_ts64(&nowts);
++ diffts = timespec64_sub(nowts, startts);
+ if (diffts.tv_sec > 0) {
+ if (!retry--) {
+ pr_err("QMan: time out, control-plane"