On Sat, 29 Jan 2022 09:32:47 +0100 Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> wrote: > If iio_device_register() fails, a previous ioremap() is left unbalanced. > > Update the error handling path and add the missing iounmap() call, as > already done in the remove function. > > Fixes: 74aeac4da66f ("iio: adc: Add MEN 16z188 ADC driver") > Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> This is a good target for a devm_ conversion at somepoint, but this is indeed the minimal fix so we should do this first. Applied to the fixes-togreg branch of iio.git and marked for stable. Thanks, Jonathan > --- > drivers/iio/adc/men_z188_adc.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/men_z188_adc.c b/drivers/iio/adc/men_z188_adc.c > index 42ea8bc7e780..adc5ceaef8c9 100644 > --- a/drivers/iio/adc/men_z188_adc.c > +++ b/drivers/iio/adc/men_z188_adc.c > @@ -103,6 +103,7 @@ static int men_z188_probe(struct mcb_device *dev, > struct z188_adc *adc; > struct iio_dev *indio_dev; > struct resource *mem; > + int ret; > > indio_dev = devm_iio_device_alloc(&dev->dev, sizeof(struct z188_adc)); > if (!indio_dev) > @@ -128,8 +129,14 @@ static int men_z188_probe(struct mcb_device *dev, > adc->mem = mem; > mcb_set_drvdata(dev, indio_dev); > > - return iio_device_register(indio_dev); > + ret = iio_device_register(indio_dev); > + if (ret) > + goto err_unmap; > + > + return 0; > > +err_unmap: > + iounmap(adc->base); > err: > mcb_release_mem(mem); > return -ENXIO;