From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753960AbcDKQeQ (ORCPT ); Mon, 11 Apr 2016 12:34:16 -0400 Received: from mail-pa0-f44.google.com ([209.85.220.44]:34951 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751624AbcDKQeO (ORCPT ); Mon, 11 Apr 2016 12:34:14 -0400 From: Sudip Mukherjee To: Alessandro Zummo , Alexandre Belloni Cc: linux-kernel@vger.kernel.org, rtc-linux@googlegroups.com, Sudip Mukherjee Subject: [PATCH] rtc: stmp3xxx: check for failure Date: Mon, 11 Apr 2016 22:03:55 +0530 Message-Id: <1460392435-23803-1-git-send-email-sudipm.mukherjee@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org stmp3xxx_wdt_register() can fail as platform_device_alloc() or platform_device_add() can fail. Lets check for the return value from both platform_device_alloc() and platform_device_add() and return the error value accordingly which is now propagated from probe. Signed-off-by: Sudip Mukherjee --- drivers/rtc/rtc-stmp3xxx.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/rtc/rtc-stmp3xxx.c b/drivers/rtc/rtc-stmp3xxx.c index ca54d03..e02e827 100644 --- a/drivers/rtc/rtc-stmp3xxx.c +++ b/drivers/rtc/rtc-stmp3xxx.c @@ -105,20 +105,22 @@ static struct stmp3xxx_wdt_pdata wdt_pdata = { .wdt_set_timeout = stmp3xxx_wdt_set_timeout, }; -static void stmp3xxx_wdt_register(struct platform_device *rtc_pdev) +static int stmp3xxx_wdt_register(struct platform_device *rtc_pdev) { struct platform_device *wdt_pdev = platform_device_alloc("stmp3xxx_rtc_wdt", rtc_pdev->id); - if (wdt_pdev) { - wdt_pdev->dev.parent = &rtc_pdev->dev; - wdt_pdev->dev.platform_data = &wdt_pdata; - platform_device_add(wdt_pdev); - } + if (!wdt_pdev) + return -ENOMEM; + + wdt_pdev->dev.parent = &rtc_pdev->dev; + wdt_pdev->dev.platform_data = &wdt_pdata; + return platform_device_add(wdt_pdev); } #else -static void stmp3xxx_wdt_register(struct platform_device *rtc_pdev) +static int stmp3xxx_wdt_register(struct platform_device *rtc_pdev) { + return 0; } #endif /* CONFIG_STMP3XXX_RTC_WATCHDOG */ @@ -357,8 +359,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev) return err; } - stmp3xxx_wdt_register(pdev); - return 0; + return stmp3xxx_wdt_register(pdev); } #ifdef CONFIG_PM_SLEEP -- 1.9.1