diff mbox series

[2/3] iio: kxsd9: Don't return error code in trigger handler

Message ID 20211024171251.22896-2-lars@metafoo.de (mailing list archive)
State Accepted
Headers show
Series [1/3] iio: ltr501: Don't return error code in trigger handler | expand

Commit Message

Lars-Peter Clausen Oct. 24, 2021, 5:12 p.m. UTC
IIO trigger handlers need to return one of the irqreturn_t values.
Returning an error code is not supported.

The kxsd9 interrupt handler returns an error code if reading the data
registers fails. In addition when exiting due to an error 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.

Since we can't return the error code make sure to at least log it as part
of the error message.

Fixes: 0427a106a98a ("iio: accel: kxsd9: Add triggered buffer handling")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/iio/accel/kxsd9.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Linus Walleij Oct. 25, 2021, 12:05 a.m. UTC | #1
On Sun, Oct 24, 2021 at 7:13 PM Lars-Peter Clausen <lars@metafoo.de> wrote:

> IIO trigger handlers need to return one of the irqreturn_t values.
> Returning an error code is not supported.
>
> The kxsd9 interrupt handler returns an error code if reading the data
> registers fails. In addition when exiting due to an error 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.
>
> Since we can't return the error code make sure to at least log it as part
> of the error message.
>
> Fixes: 0427a106a98a ("iio: accel: kxsd9: Add triggered buffer handling")
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij
diff mbox series

Patch

diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c
index 2faf85ca996e..552eba5e8b4f 100644
--- a/drivers/iio/accel/kxsd9.c
+++ b/drivers/iio/accel/kxsd9.c
@@ -224,14 +224,14 @@  static irqreturn_t kxsd9_trigger_handler(int irq, void *p)
 			       hw_values.chan,
 			       sizeof(hw_values.chan));
 	if (ret) {
-		dev_err(st->dev,
-			"error reading data\n");
-		return ret;
+		dev_err(st->dev, "error reading data: %d\n", ret);
+		goto out;
 	}
 
 	iio_push_to_buffers_with_timestamp(indio_dev,
 					   &hw_values,
 					   iio_get_time_ns(indio_dev));
+out:
 	iio_trigger_notify_done(indio_dev->trig);
 
 	return IRQ_HANDLED;