Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed04c87d authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Greg Kroah-Hartman
Browse files

iio: stk3310: Don't return error code in interrupt handler



commit 8e1eeca5afa7ba84d885987165dbdc5decf15413 upstream.

Interrupt handlers must return one of the irqreturn_t values. Returning a
error code is not supported.

The stk3310 event interrupt handler returns an error code when reading the
flags register fails.

Fix the implementation to always return an irqreturn_t value.

Fixes: 3dd477ac ("iio: light: Add threshold interrupt support for STK3310")
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Link: https://lore.kernel.org/r/20211024171251.22896-3-lars@metafoo.de


Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 37e85bdf
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -545,9 +545,8 @@ static irqreturn_t stk3310_irq_event_handler(int irq, void *private)
	mutex_lock(&data->lock);
	mutex_lock(&data->lock);
	ret = regmap_field_read(data->reg_flag_nf, &dir);
	ret = regmap_field_read(data->reg_flag_nf, &dir);
	if (ret < 0) {
	if (ret < 0) {
		dev_err(&data->client->dev, "register read failed\n");
		dev_err(&data->client->dev, "register read failed: %d\n", ret);
		mutex_unlock(&data->lock);
		goto out;
		return ret;
	}
	}
	event = IIO_UNMOD_EVENT_CODE(IIO_PROXIMITY, 1,
	event = IIO_UNMOD_EVENT_CODE(IIO_PROXIMITY, 1,
				     IIO_EV_TYPE_THRESH,
				     IIO_EV_TYPE_THRESH,
@@ -559,6 +558,7 @@ static irqreturn_t stk3310_irq_event_handler(int irq, void *private)
	ret = regmap_field_write(data->reg_flag_psint, 0);
	ret = regmap_field_write(data->reg_flag_psint, 0);
	if (ret < 0)
	if (ret < 0)
		dev_err(&data->client->dev, "failed to reset interrupts\n");
		dev_err(&data->client->dev, "failed to reset interrupts\n");
out:
	mutex_unlock(&data->lock);
	mutex_unlock(&data->lock);


	return IRQ_HANDLED;
	return IRQ_HANDLED;