Re: [PATCH] iio: proximity: aw96103: Fix early return in IRQ handler loop

Jonathan Cameron <[email protected]>
Newsgroups org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel
Message-ID <20260820024909.307601c0@jic23-huawei>
On Thu, 20 Aug 2026 02:46:53 +0100
Jonathan Cameron <[email protected]> wrote:

> On Wed, 19 Aug 2026 22:08:26 +0100
> Salah Triki <[email protected]> wrote:
> 
> > When an unrecognized proximity status is encountered in aw96103_irq(),
> > the default case executes a return IRQ_HANDLED. Because this happens
> > inside the loop over the device's channels, any remaining channels are
> > left unhandled, causing missed events and stale IRQ status.
> > 
> > Replace the return IRQ_HANDLED statement in the default case with
> > continue to ensure all channels are processed even if one has an
> > unexpected status value.
> > 
> > Fixes: 07b241262dca ("iio: proximity: aw96103: Add support for aw96103/aw96105 proximity sensor")  
> Hi Salah,
> 
> Interesting little find.
> 
> So usual question for a fix: Have you seen this in the wild, or is
> it code reading / tool found?  I'm not against changing it but it
> is useful to know this for attaching different levels of importance
> to the bug and hence how fast we merge it. Please add a note on that
> to the commit message for v2 (though let it sit for a while for others
> to look at)
> 
> Is there a path for this to happen short of corruption / broken / 
> malicious device?  If not, no fixes tag - it's hardening or a useabilty
> improvement rather than a bug fix

+CC Wang Shuaijie who wrote this one and may be able to provide
more insight into why it previously exited on this condition.

Jonathan

> 
> Thanks
> 
> Jonathan
> 
> > Signed-off-by: Salah Triki <[email protected]>
> > ---
> >  drivers/iio/proximity/aw96103.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/proximity/aw96103.c b/drivers/iio/proximity/aw96103.c
> > index 8fbb755dcae0..b1f36a51d56f 100644
> > --- a/drivers/iio/proximity/aw96103.c
> > +++ b/drivers/iio/proximity/aw96103.c
> > @@ -669,7 +669,7 @@ static irqreturn_t aw96103_irq(int irq, void *data)
> >  				       iio_get_time_ns(indio_dev));
> >  			break;
> >  		default:
> > -			return IRQ_HANDLED;
> > +			continue;
> >  		}
> >  		aw96103->channels_arr[i].old_irq_status = curr_status;
> >  	}  
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.