Message ID | 20180308093153.GB16525@mwanda (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 8 Mar 2018 12:31:53 +0300 Dan Carpenter <dan.carpenter@oracle.com> wrote: > The meson_sar_adc_lock() function is not supposed to hold the > "indio_dev->mlock" on the error path. > > Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > Applied to the fixes-togreg branch of iio.git and marked for stable. Thanks Jonathan > diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c > index 29fa7736d80c..ede955d9b2a4 100644 > --- a/drivers/iio/adc/meson_saradc.c > +++ b/drivers/iio/adc/meson_saradc.c > @@ -462,8 +462,10 @@ static int meson_sar_adc_lock(struct iio_dev *indio_dev) > regmap_read(priv->regmap, MESON_SAR_ADC_DELAY, &val); > } while (val & MESON_SAR_ADC_DELAY_BL30_BUSY && timeout--); > > - if (timeout < 0) > + if (timeout < 0) { > + mutex_unlock(&indio_dev->mlock); > return -ETIMEDOUT; > + } > } > > return 0; -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Dan, On Thu, Mar 8, 2018 at 10:31 AM, Dan Carpenter <dan.carpenter@oracle.com> wrote: > The meson_sar_adc_lock() function is not supposed to hold the > "indio_dev->mlock" on the error path. > > Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Martin Blumenstingl<martin.blumenstingl@googlemail.com> (even if I might be too late already since Jonathan already applied this patch) thank you for finding and fixing this! out of curiosity: did you find this with some tool (sparse?) or by looking at the code? Regards Martin -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Mar 12, 2018 at 09:43:19PM +0100, Martin Blumenstingl wrote: > Hi Dan, > > On Thu, Mar 8, 2018 at 10:31 AM, Dan Carpenter <dan.carpenter@oracle.com> wrote: > > The meson_sar_adc_lock() function is not supposed to hold the > > "indio_dev->mlock" on the error path. > > > > Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs") > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > Acked-by: Martin Blumenstingl<martin.blumenstingl@googlemail.com> > > (even if I might be too late already since Jonathan already applied this patch) > > thank you for finding and fixing this! > out of curiosity: did you find this with some tool (sparse?) or by > looking at the code? > This was some Smatch stuff that I haven't pushed. I re-wrote the locking check to use cross function analysis, and it actually warns about the callers not meson_sar_adc_lock(). That code works ok basically for locks but it generates a ton of false positives about double unlocks so I haven't pushed it. regards, dan carpenter -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/iio/adc/meson_saradc.c b/drivers/iio/adc/meson_saradc.c index 29fa7736d80c..ede955d9b2a4 100644 --- a/drivers/iio/adc/meson_saradc.c +++ b/drivers/iio/adc/meson_saradc.c @@ -462,8 +462,10 @@ static int meson_sar_adc_lock(struct iio_dev *indio_dev) regmap_read(priv->regmap, MESON_SAR_ADC_DELAY, &val); } while (val & MESON_SAR_ADC_DELAY_BL30_BUSY && timeout--); - if (timeout < 0) + if (timeout < 0) { + mutex_unlock(&indio_dev->mlock); return -ETIMEDOUT; + } } return 0;
The meson_sar_adc_lock() function is not supposed to hold the "indio_dev->mlock" on the error path. Fixes: 3adbf3427330 ("iio: adc: add a driver for the SAR ADC found in Amlogic Meson SoCs") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html