lkml.org 
[lkml]   [2021]   [Dec]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 36/42] iio: kxsd9: Dont return error code in trigger handler
    Date
    From: Lars-Peter Clausen <lars@metafoo.de>

    commit 45febe0d63917ee908198c5be08511c64ee1790a upstream.

    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>
    Link: https://lore.kernel.org/r/20211024171251.22896-2-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/accel/kxsd9.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/iio/accel/kxsd9.c
    +++ b/drivers/iio/accel/kxsd9.c
    @@ -227,14 +227,14 @@ static irqreturn_t kxsd9_trigger_handler
    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;

    \
     
     \ /
      Last update: 2021-12-13 10:37    [W:2.954 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site