Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: ltr501: Don't return error code in trigger handler

IIO trigger handlers need to return one of the irqreturn_t values.
Returning an error code is not supported.

The ltr501 interrupt handler gets this right for most error paths, but
there is one case where it returns the error code.

In addition for this particular case the trigger handler does not call
`iio_trigger_notify_done()`. Which when not done keeps the triggered
disabled forever.

Modify the code so that the function returns a valid irqreturn_t value as
well as calling `iio_trigger_notify_done()` on all exit paths.

Fixes: 2690be905123 ("iio: Add Lite-On ltr501 ambient light / proximity sensor driver")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Link: https://lore.kernel.org/r/20211024171251.22896-1-lars@metafoo.de
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Lars-Peter Clausen and committed by
Jonathan Cameron
ef9d67fa 70c9774e

+1 -1
+1 -1
drivers/iio/light/ltr501.c
··· 1275 1275 ret = regmap_bulk_read(data->regmap, LTR501_ALS_DATA1, 1276 1276 als_buf, sizeof(als_buf)); 1277 1277 if (ret < 0) 1278 - return ret; 1278 + goto done; 1279 1279 if (test_bit(0, indio_dev->active_scan_mask)) 1280 1280 scan.channels[j++] = le16_to_cpu(als_buf[1]); 1281 1281 if (test_bit(1, indio_dev->active_scan_mask))