Commit 8030aa3c authored by Wang Kefeng's avatar Wang Kefeng Committed by Russell King (Oracle)
Browse files

ARM: 9207/1: amba: fix refcount underflow if amba_device_add() fails



"ARM: 9192/1: amba: fix memory leak in amba_device_try_add()" leads
to a refcount underflow if amba_device_add() fails, which called by
of_amba_device_create(), the of_amba_device_create() already exists
the error handling, so amba_put_device() only need to be added into
amba_deferred_retry().

Fixes: 7719a68b ("ARM: 9192/1: amba: fix memory leak in amba_device_try_add()")
Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
parent e5c46fde
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -493,13 +493,8 @@ static int amba_device_try_add(struct amba_device *dev, struct resource *parent)
		goto skip_probe;

	ret = amba_read_periphid(dev);
	if (ret) {
		if (ret != -EPROBE_DEFER) {
			amba_device_put(dev);
			goto err_out;
		}
	if (ret)
		goto err_release;
	}

skip_probe:
	ret = device_add(&dev->dev);
@@ -546,6 +541,7 @@ static int amba_deferred_retry(void)
			continue;

		list_del_init(&ddev->node);
		amba_device_put(ddev->dev);
		kfree(ddev);
	}