]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 May 2021 12:50:06 +0000 (14:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 May 2021 12:50:06 +0000 (14:50 +0200)
added patches:
iio-tsl2583-fix-division-by-a-zero-lux_val.patch

queue-4.9/iio-tsl2583-fix-division-by-a-zero-lux_val.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/iio-tsl2583-fix-division-by-a-zero-lux_val.patch b/queue-4.9/iio-tsl2583-fix-division-by-a-zero-lux_val.patch
new file mode 100644 (file)
index 0000000..bc529d4
--- /dev/null
@@ -0,0 +1,48 @@
+From af0e1871d79cfbb91f732d2c6fa7558e45c31038 Mon Sep 17 00:00:00 2001
+From: Colin Ian King <colin.king@canonical.com>
+Date: Fri, 7 May 2021 19:30:41 +0100
+Subject: iio: tsl2583: Fix division by a zero lux_val
+
+From: Colin Ian King <colin.king@canonical.com>
+
+commit af0e1871d79cfbb91f732d2c6fa7558e45c31038 upstream.
+
+The lux_val returned from tsl2583_get_lux can potentially be zero,
+so check for this to avoid a division by zero and an overflowed
+gain_trim_val.
+
+Fixes clang scan-build warning:
+
+drivers/iio/light/tsl2583.c:345:40: warning: Either the
+condition 'lux_val<0' is redundant or there is division
+by zero at line 345. [zerodivcond]
+
+Fixes: ac4f6eee8fe8 ("staging: iio: TAOS tsl258x: Device driver")
+Signed-off-by: Colin Ian King <colin.king@canonical.com>
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+[Colin Ian King: minor context adjustments for 4.9.y]
+Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/staging/iio/light/tsl2583.c |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/staging/iio/light/tsl2583.c
++++ b/drivers/staging/iio/light/tsl2583.c
+@@ -382,6 +382,15 @@ static int taos_als_calibrate(struct iio
+               dev_err(&chip->client->dev, "taos_als_calibrate failed to get lux\n");
+               return lux_val;
+       }
++
++      /* Avoid division by zero of lux_value later on */
++      if (lux_val == 0) {
++              dev_err(&chip->client->dev,
++                      "%s: lux_val of 0 will produce out of range trim_value\n",
++                      __func__);
++              return -ENODATA;
++      }
++
+       gain_trim_val = (unsigned int)(((chip->taos_settings.als_cal_target)
+                       * chip->taos_settings.als_gain_trim) / lux_val);
index efacf4f883591931bb2310abc022507dca4c5d5c..1e0cf8cc53bc8ab9e12d4fa4973ef5ed3250881e 100644 (file)
@@ -33,3 +33,4 @@ video-hgafb-fix-potential-null-pointer-dereference.patch
 vgacon-record-video-mode-changes-with-vt_resizex.patch
 vt-fix-character-height-handling-with-vt_resizex.patch
 tty-vt-always-invoke-vc-vc_sw-con_resize-callback.patch
+iio-tsl2583-fix-division-by-a-zero-lux_val.patch