On Tue, 1 Sep 2020 11:32:18 +0200 Angelo Compagnucci <angelo.compagnucci@xxxxxxxxx> wrote: > Reading from the chip should be unlocked on error path else the lock > could never being released. We should also reference the fix that we are fixing so I've added an additional fixes tag below and a reported by tag for Julia. > > Fixes: 07914c84ba30 ("iio: adc: Add driver for Microchip MCP3422/3/4 high resolution ADC") Fixes: 3f1093d83d71 ("iio: adc: mcp3422: fix locking scope") > Signed-off-by: Angelo Compagnucci <angelo.compagnucci@xxxxxxxxx> Reported-by: Julia Lawall <julia.lawall@xxxxxxxx> Acked-by: Jonathan Cameron <jonathan.cameron@xxxxxxxxxx> Greg, this is the fix for the issue Julia reported. Sorry for the hassle (and messing this up in the first palce), but could you pick this one up directly into your staging-linus branch. If you'd prefer a different resolution to the problem let us know. Thanks, Jonathan > --- > drivers/iio/adc/mcp3422.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/mcp3422.c b/drivers/iio/adc/mcp3422.c > index 219adac2384b..da353dcb1e9d 100644 > --- a/drivers/iio/adc/mcp3422.c > +++ b/drivers/iio/adc/mcp3422.c > @@ -143,8 +143,10 @@ static int mcp3422_read_channel(struct mcp3422 *adc, > config &= ~MCP3422_PGA_MASK; > config |= MCP3422_PGA_VALUE(adc->pga[req_channel]); > ret = mcp3422_update_config(adc, config); > - if (ret < 0) > + if (ret < 0) { > + mutex_unlock(&adc->lock); > return ret; > + } > msleep(mcp3422_read_times[MCP3422_SAMPLE_RATE(adc->config)]); > } >