Make sure to free the platform device also in the event that registration fails. Fixes: 49cbe78637eb ("[ARM] pxa: add base support for Marvell's PXA168 processor line") Cc: stable@xxxxxxxxxxxxxxx # 2.6.30 Signed-off-by: Johan Hovold <johan@xxxxxxxxxx> --- arch/arm/mach-mmp/devices.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-mmp/devices.c b/arch/arm/mach-mmp/devices.c index 18bee66a671f..0b99aa1d5350 100644 --- a/arch/arm/mach-mmp/devices.c +++ b/arch/arm/mach-mmp/devices.c @@ -53,20 +53,25 @@ int __init pxa_register_device(struct pxa_device_desc *desc, } ret = platform_device_add_resources(pdev, res, nres); - if (ret) { - platform_device_put(pdev); - return ret; - } + if (ret) + goto err_put_device; if (data && size) { ret = platform_device_add_data(pdev, data, size); - if (ret) { - platform_device_put(pdev); - return ret; - } + if (ret) + goto err_put_device; } - return platform_device_add(pdev); + ret = platform_device_add(pdev); + if (ret) + goto err_put_device; + + return 0; + +err_put_device: + platform_device_put(pdev); + + return ret; } #if IS_ENABLED(CONFIG_USB) || IS_ENABLED(CONFIG_USB_GADGET) -- 2.34.1