> From: Jonathan Cameron > > The trigger handler calls iio_trigger_notify_done() on the driver's own > trigger rather than on the trigger that is currently in use by the > device. The driver does not restrict which trigger may be used, so if > another trigger, for example an hrtimer trigger, is selected then that > trigger's use_count is never decremented and it stops firing after the > first sample. The driver's own trigger use_count also underflows, > preventing it from firing later. > > Use iio_dev->trig instead. > > Fixes: 3025c8688c1e ("iio: light: add support for UVIS25 sensor") > Cc: stable@vger.kernel.org > Signed-off-by: Jonathan Cameron Acked-by: Lorenzo Bianconi > --- > Another LLM found one as part of refactoring how all the code around > triggers works. Definitely the wrong trigger. There are lots > that access the right trigger via the wrong path (shortly to be > cleaned up), this one manages to get the wrong one in many cases! > --- > drivers/iio/light/st_uvis25_core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iio/light/st_uvis25_core.c b/drivers/iio/light/st_uvis25_core.c > index 94d5261b2663..5c63a68948d6 100644 > --- a/drivers/iio/light/st_uvis25_core.c > +++ b/drivers/iio/light/st_uvis25_core.c > @@ -248,7 +248,7 @@ static irqreturn_t st_uvis25_buffer_handler_thread(int irq, void *p) > iio_get_time_ns(iio_dev)); > > out: > - iio_trigger_notify_done(hw->trig); > + iio_trigger_notify_done(iio_dev->trig); > > return IRQ_HANDLED; > } > -- > 2.56.0 >