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) {