mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 02:34:01 +08:00
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: 7719a68b2f
("ARM: 9192/1: amba: fix memory leak in amba_device_try_add()")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
This commit is contained in:
parent
e5c46fde75
commit
8030aa3ce1
@ -493,13 +493,8 @@ static int amba_device_try_add(struct amba_device *dev, struct resource *parent)
|
|||||||
goto skip_probe;
|
goto skip_probe;
|
||||||
|
|
||||||
ret = amba_read_periphid(dev);
|
ret = amba_read_periphid(dev);
|
||||||
if (ret) {
|
if (ret)
|
||||||
if (ret != -EPROBE_DEFER) {
|
|
||||||
amba_device_put(dev);
|
|
||||||
goto err_out;
|
|
||||||
}
|
|
||||||
goto err_release;
|
goto err_release;
|
||||||
}
|
|
||||||
|
|
||||||
skip_probe:
|
skip_probe:
|
||||||
ret = device_add(&dev->dev);
|
ret = device_add(&dev->dev);
|
||||||
@ -546,6 +541,7 @@ static int amba_deferred_retry(void)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
list_del_init(&ddev->node);
|
list_del_init(&ddev->node);
|
||||||
|
amba_device_put(ddev->dev);
|
||||||
kfree(ddev);
|
kfree(ddev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user