Re: [PATCH 2/5] iio: stmpe-adc: Reinit completion struct on begin conversion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2019-05-11 at 11:08 +0100, Jonathan Cameron wrote:
> On Tue,  7 May 2019 16:36:12 +0200
> Philippe Schenker <dev@xxxxxxxxxxxx> wrote:
> 
> > From: Philippe Schenker <philippe.schenker@xxxxxxxxxxx>
> > 
> > In some cases, the wait_completion got interrupted. This caused the
> > error-handling to mutex_unlock the function. The before turned on
> > interrupt then got called anyway. In the ISR then completion() was
> > called causing wrong adc-values returned in a following adc-readout.
> > 
> > Reinitialise completion struct to make sure the counter is zero
> > when beginning a new adc-conversion.
> > 
> > Signed-off-by: Philippe Schenker <philippe.schenker@xxxxxxxxxxx>
> Hi Philippe, 
> 
> To me this looks like a fix that we should consider applying to stable.
> However, as it is in the middle of this series I'm not going to take
> it via the fast route (during rc's). If people want to backport it
> they will have to wait until after the next merge window.
> If anyone has an urgent need, then shout in the next week and I'll
> pull this version out and we can restructure the set.
> 
> Applied to the togreg branch of iio.git and pushed out as testing
> for the autobuilders to play with it.
> 
> Thanks,
> 
> Jonathan

Hi Jonathan! I don't think that's necessary. As long as it gets into stable at
some point. Our customer use downstream anyway. Where I'm about to apply it now.

Thanks,
Philippe
> 
> > ---
> > 
> >  drivers/iio/adc/stmpe-adc.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/drivers/iio/adc/stmpe-adc.c b/drivers/iio/adc/stmpe-adc.c
> > index 9ec338ba3440..b3872eb37293 100644
> > --- a/drivers/iio/adc/stmpe-adc.c
> > +++ b/drivers/iio/adc/stmpe-adc.c
> > @@ -65,6 +65,8 @@ static int stmpe_read_voltage(struct stmpe_adc *info,
> >  
> >  	mutex_lock(&info->lock);
> >  
> > +	reinit_completion(&info->completion);
> > +
> >  	info->channel = (u8)chan->channel;
> >  
> >  	if (info->channel > STMPE_ADC_LAST_NR) {
> > @@ -105,6 +107,8 @@ static int stmpe_read_temp(struct stmpe_adc *info,
> >  
> >  	mutex_lock(&info->lock);
> >  
> > +	reinit_completion(&info->completion);
> > +
> >  	info->channel = (u8)chan->channel;
> >  
> >  	if (info->channel != STMPE_TEMP_CHANNEL) {




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux