Use platform_device_put() to free platform device before print error message when platform_device_add() fails to run. Add dev_err() to report error in case of alloc memory to wdt_pdev fail. Fixes: 1a71fb84fda6 ("rtc: stmp3xxx: add wdt-accessor function") Signed-off-by: Lin Yujun <linyujun809@xxxxxxxxxx> --- drivers/rtc/rtc-stmp3xxx.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c index 40c0f7ed36e0..b2f4b034cdb6 100644 --- a/drivers/rtc/rtc-stmp3xxx.c +++ b/drivers/rtc/rtc-stmp3xxx.c @@ -107,6 +107,11 @@ static void stmp3xxx_wdt_register(struct platform_device *rtc_pdev) wdt_pdev->dev.parent = &rtc_pdev->dev; wdt_pdev->dev.platform_data = &wdt_pdata; rc = platform_device_add(wdt_pdev); + if (rc) + platform_device_put(wdt_pdev); + } else { + dev_err(&rtc_pdev->dev, + "failed to allocate stmp3xxx_rtc_wdt\n"); } if (rc) -- 2.17.1