| From ef9d67fa72c1b149a420587e435a3e888bdbf74f Mon Sep 17 00:00:00 2001 |
| From: Lars-Peter Clausen <lars@metafoo.de> |
| Date: Sun, 24 Oct 2021 19:12:49 +0200 |
| Subject: iio: ltr501: Don't return error code in trigger handler |
| |
| From: Lars-Peter Clausen <lars@metafoo.de> |
| |
| commit ef9d67fa72c1b149a420587e435a3e888bdbf74f upstream. |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/iio/light/ltr501.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/iio/light/ltr501.c |
| +++ b/drivers/iio/light/ltr501.c |
| @@ -1248,7 +1248,7 @@ static irqreturn_t ltr501_trigger_handle |
| ret = regmap_bulk_read(data->regmap, LTR501_ALS_DATA1, |
| (u8 *)als_buf, sizeof(als_buf)); |
| if (ret < 0) |
| - return ret; |
| + goto done; |
| if (test_bit(0, indio_dev->active_scan_mask)) |
| scan.channels[j++] = le16_to_cpu(als_buf[1]); |
| if (test_bit(1, indio_dev->active_scan_mask)) |