linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] iio: itg3200: Call iio_trigger_notify_done() on error
@ 2021-11-01 14:40 Lars-Peter Clausen
  2021-11-01 14:40 ` [PATCH 2/2] iio: ad7768-1: " Lars-Peter Clausen
  0 siblings, 1 reply; 3+ messages in thread
From: Lars-Peter Clausen @ 2021-11-01 14:40 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Michael Hennerich, Nuno Sa, Manuel Stahl, linux-iio, Lars-Peter Clausen

IIO trigger handlers must call iio_trigger_notify_done() when done. This
must be done even when an error occurred. Otherwise the trigger will be
seen as busy indefinitely and the trigger handler will never be called
again.

The itg3200 driver neglects to call iio_trigger_notify_done() when there is
an error reading the gyro data. Fix this by making sure that
iio_trigger_notify_done() is included in the error exit path.

Fixes: 9dbf091da080 ("iio: gyro: Add itg3200")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/iio/gyro/itg3200_buffer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/gyro/itg3200_buffer.c b/drivers/iio/gyro/itg3200_buffer.c
index 04dd6a7969ea..4cfa0d439560 100644
--- a/drivers/iio/gyro/itg3200_buffer.c
+++ b/drivers/iio/gyro/itg3200_buffer.c
@@ -61,9 +61,9 @@ static irqreturn_t itg3200_trigger_handler(int irq, void *p)
 
 	iio_push_to_buffers_with_timestamp(indio_dev, &scan, pf->timestamp);
 
+error_ret:
 	iio_trigger_notify_done(indio_dev->trig);
 
-error_ret:
 	return IRQ_HANDLED;
 }
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] iio: ad7768-1: Call iio_trigger_notify_done() on error
  2021-11-01 14:40 [PATCH 1/2] iio: itg3200: Call iio_trigger_notify_done() on error Lars-Peter Clausen
@ 2021-11-01 14:40 ` Lars-Peter Clausen
  2021-11-13 16:28   ` Jonathan Cameron
  0 siblings, 1 reply; 3+ messages in thread
From: Lars-Peter Clausen @ 2021-11-01 14:40 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Michael Hennerich, Nuno Sa, Manuel Stahl, linux-iio, Lars-Peter Clausen

IIO trigger handlers must call iio_trigger_notify_done() when done. This
must be done even when an error occurred. Otherwise the trigger will be
seen as busy indefinitely and the trigger handler will never be called
again.

The ad7768-1 driver neglects to call iio_trigger_notify_done() when there
is an error reading the converter data. Fix this by making sure that
iio_trigger_notify_done() is included in the error exit path.

Fixes: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 drivers/iio/adc/ad7768-1.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
index 2c5c8a3672b2..aa42ba759fa1 100644
--- a/drivers/iio/adc/ad7768-1.c
+++ b/drivers/iio/adc/ad7768-1.c
@@ -480,8 +480,8 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p)
 	iio_push_to_buffers_with_timestamp(indio_dev, &st->data.scan,
 					   iio_get_time_ns(indio_dev));
 
-	iio_trigger_notify_done(indio_dev->trig);
 err_unlock:
+	iio_trigger_notify_done(indio_dev->trig);
 	mutex_unlock(&st->lock);
 
 	return IRQ_HANDLED;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 2/2] iio: ad7768-1: Call iio_trigger_notify_done() on error
  2021-11-01 14:40 ` [PATCH 2/2] iio: ad7768-1: " Lars-Peter Clausen
@ 2021-11-13 16:28   ` Jonathan Cameron
  0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Cameron @ 2021-11-13 16:28 UTC (permalink / raw)
  To: Lars-Peter Clausen; +Cc: Michael Hennerich, Nuno Sa, Manuel Stahl, linux-iio

On Mon,  1 Nov 2021 15:40:55 +0100
Lars-Peter Clausen <lars@metafoo.de> wrote:

> IIO trigger handlers must call iio_trigger_notify_done() when done. This
> must be done even when an error occurred. Otherwise the trigger will be
> seen as busy indefinitely and the trigger handler will never be called
> again.
> 
> The ad7768-1 driver neglects to call iio_trigger_notify_done() when there
> is an error reading the converter data. Fix this by making sure that
> iio_trigger_notify_done() is included in the error exit path.
> 
> Fixes: a5f8c7da3dbe ("iio: adc: Add AD7768-1 ADC basic support")
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Hi Lars,

I've always meant to have a hard think about what we 'should' do in the event
of an error in one of these trigger handlers.   Definitely don't want to get
stuck so these patches make sense, but I'd also at somepoint like to explore
if we should stop the device capture and do something like poison the kfifo
output so that we know it was broken. 

Anyhow, a discussion for another day.

Applied these two to the fixes-togreg branch of iio.git and marked for stable.

Thanks,

Jonathan

> ---
>  drivers/iio/adc/ad7768-1.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/ad7768-1.c b/drivers/iio/adc/ad7768-1.c
> index 2c5c8a3672b2..aa42ba759fa1 100644
> --- a/drivers/iio/adc/ad7768-1.c
> +++ b/drivers/iio/adc/ad7768-1.c
> @@ -480,8 +480,8 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p)
>  	iio_push_to_buffers_with_timestamp(indio_dev, &st->data.scan,
>  					   iio_get_time_ns(indio_dev));
>  
> -	iio_trigger_notify_done(indio_dev->trig);
>  err_unlock:
> +	iio_trigger_notify_done(indio_dev->trig);
>  	mutex_unlock(&st->lock);
>  
>  	return IRQ_HANDLED;


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-11-13 16:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-01 14:40 [PATCH 1/2] iio: itg3200: Call iio_trigger_notify_done() on error Lars-Peter Clausen
2021-11-01 14:40 ` [PATCH 2/2] iio: ad7768-1: " Lars-Peter Clausen
2021-11-13 16:28   ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).