Commit 4ab6bff2 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Ye Bin
Browse files

iio: adc: men_z188_adc: Fix a resource leak in an error handling path

stable inclusion
from stable-v4.19.232
commit 53d43a9c8dd224e66559fe86af1e473802c7130e
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IALQ1H
CVE: CVE-2022-48928

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=53d43a9c8dd224e66559fe86af1e473802c7130e



--------------------------------

commit e0a2e37f upstream.

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: 74aeac4d ("iio: adc: Add MEN 16z188 ADC driver")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/320fc777863880247c2aff4a9d1a54ba69abf080.1643445149.git.christophe.jaillet@wanadoo.fr


Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarYe Bin <yebin10@huawei.com>
parent 80b00cbd
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -106,6 +106,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)
@@ -132,8 +133,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;