Message ID | 20180530181936.17902-1-colin.king@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, May 30, 2018 at 07:19:36PM +0100, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > It may be possible for tsl2772_get_lux to return a zero lux value > and hence a division by zero can occur when lux_val is zero. Check > for this case and return -ERANGE to avoid the division by zero. > > Detected by CoverityScan, CID#1469484 ("Division or modulo by zero") > > Signed-off-by: Colin Ian King <colin.king@canonical.com> Acked-by: Brian Masney <masneyb@onstation.org> -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, 31 May 2018 05:28:01 -0400 Brian Masney <masneyb@onstation.org> wrote: > On Wed, May 30, 2018 at 07:19:36PM +0100, Colin King wrote: > > From: Colin Ian King <colin.king@canonical.com> > > > > It may be possible for tsl2772_get_lux to return a zero lux value > > and hence a division by zero can occur when lux_val is zero. Check > > for this case and return -ERANGE to avoid the division by zero. > > > > Detected by CoverityScan, CID#1469484 ("Division or modulo by zero") > > > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > > Acked-by: Brian Masney <masneyb@onstation.org> Applied to the fixes-togreg branch of iio.git. As there was nothing in that branch that is going upstream until after the merge window closes, I moved it forward to match staging/staging-next. Jonathan -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/iio/light/tsl2772.c b/drivers/iio/light/tsl2772.c index 34d42a2504c9..df5b2a0da96c 100644 --- a/drivers/iio/light/tsl2772.c +++ b/drivers/iio/light/tsl2772.c @@ -582,6 +582,8 @@ static int tsl2772_als_calibrate(struct iio_dev *indio_dev) "%s: failed to get lux\n", __func__); return lux_val; } + if (lux_val == 0) + return -ERANGE; ret = (chip->settings.als_cal_target * chip->settings.als_gain_trim) / lux_val;