From patchwork Wed Apr 25 10:14:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Belloni X-Patchwork-Id: 10362233 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 25CB46032C for ; Wed, 25 Apr 2018 10:31:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1370328EC2 for ; Wed, 25 Apr 2018 10:31:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 062DF28F5B; Wed, 25 Apr 2018 10:31:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 73C6B28EC2 for ; Wed, 25 Apr 2018 10:31:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=OdumZKbqY2Z/ASpLBtiBehAZcYHHd0O5rk+eHEH/O/U=; b=EdR vOOqUigHN8sTVoeI9+QiX1l9M3UbGvjq0yzb/mmX5wmwqbmrjpQBVOsBGMbOAdeon6ZeGCrGGPY0F q1xQeUtJVH6Jsdtf+IaqmCvKv1W0UbZ+4Zl8cFriVPAh0+GwD2nT2RBkE2LiKo23GSUwSZ43PVKYB /6O+XKYquY7kXO+XEEm/Lp51zNnAU4ov6nquxYwkEsJ7cuntlA16DIj4nXqddeYO+BRa2/cjT4LLN 9yYbgakbtDsN+owHFooCAw6+Shdw5hkDxlr1aqsLHV6Ah6WS0Po+rYy5Pdh5+REBfH5n9JZ4vb+uy uElq381FL2qa4oaFsAFTGqJ7iwVyHuw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fBHhP-0007WW-N3; Wed, 25 Apr 2018 10:30:55 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fBHhN-0007Pp-27 for linux-arm-kernel@bombadil.infradead.org; Wed, 25 Apr 2018 10:30:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Td6Q5qPyoYxYW3O9pjLNQ7dJkgPTQzJ7Do2NKapWIno=; b=Ox2DHX6PM9n55ki5eNRmcGSC9 xdN9M5sP6VbnUyYhS0YytKLxPapx1MYpLMr+uFMIIbcNE2OUrzYbMso3b9yr32WcE7zIa1b29zggx CBr/AEeL8eh+8zsR2gpidj+B2wJEroRUM+j1lCR2NwNnmu3nCqAJ1JtGYBHUE1iUsLDeeqBYbDY67 2nC+uJVamHZJavkotg7If02ZykyPNgtxrFx0NBEubG94w2kc6ZkOr4LI3XX2QlatGnAtipIvdyacY gXQKv6A8rMv++fWHfp0NoTQocCyc9OJjzwAkxSMdV+/fzI1n9c9mC8vfoVlveIcC1XGz4SysJP7Go tV0UPO1MA==; Received: from mail.bootlin.com ([62.4.15.54]) by casper.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fBHS5-0000Xv-1y for linux-arm-kernel@lists.infradead.org; Wed, 25 Apr 2018 10:15:06 +0000 Received: by mail.bootlin.com (Postfix, from userid 110) id 9451920650; Wed, 25 Apr 2018 12:14:53 +0200 (CEST) Received: from localhost (unknown [88.191.26.124]) by mail.bootlin.com (Postfix) with ESMTPSA id 618D1207C0; Wed, 25 Apr 2018 12:14:43 +0200 (CEST) From: Alexandre Belloni To: Daniel Lezcano Subject: [PATCH] clocksource/drivers/timer-atmel-pit: properly handle error cases Date: Wed, 25 Apr 2018 12:14:39 +0200 Message-Id: <20180425101439.28908-1-alexandre.belloni@bootlin.com> X-Mailer: git-send-email 2.17.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180425_111505_102446_F311C37E X-CRM114-Status: GOOD ( 12.72 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , linux-kernel@vger.kernel.org, Boris Brezillon , Thomas Gleixner , linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP smatch now reports a possible leak: smatch warnings: drivers/clocksource/timer-atmel-pit.c:183 at91sam926x_pit_dt_init() warn: possible memory leak of 'data' Ensure data is freed before exiting with an error. Reported-by: Dan Carpenter Signed-off-by: Alexandre Belloni --- drivers/clocksource/timer-atmel-pit.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/clocksource/timer-atmel-pit.c b/drivers/clocksource/timer-atmel-pit.c index ec8a4376f74f..2fab18fae4fc 100644 --- a/drivers/clocksource/timer-atmel-pit.c +++ b/drivers/clocksource/timer-atmel-pit.c @@ -180,26 +180,29 @@ static int __init at91sam926x_pit_dt_init(struct device_node *node) data->base = of_iomap(node, 0); if (!data->base) { pr_err("Could not map PIT address\n"); - return -ENXIO; + ret = -ENXIO; + goto exit; } data->mck = of_clk_get(node, 0); if (IS_ERR(data->mck)) { pr_err("Unable to get mck clk\n"); - return PTR_ERR(data->mck); + ret = PTR_ERR(data->mck); + goto exit; } ret = clk_prepare_enable(data->mck); if (ret) { pr_err("Unable to enable mck\n"); - return ret; + goto exit; } /* Get the interrupts property */ data->irq = irq_of_parse_and_map(node, 0); if (!data->irq) { pr_err("Unable to get IRQ from DT\n"); - return -EINVAL; + ret = -EINVAL; + goto exit; } /* @@ -227,7 +230,7 @@ static int __init at91sam926x_pit_dt_init(struct device_node *node) ret = clocksource_register_hz(&data->clksrc, pit_rate); if (ret) { pr_err("Failed to register clocksource\n"); - return ret; + goto exit; } /* Set up irq handler */ @@ -236,7 +239,8 @@ static int __init at91sam926x_pit_dt_init(struct device_node *node) "at91_tick", data); if (ret) { pr_err("Unable to setup IRQ\n"); - return ret; + clocksource_unregister(&data->clksrc); + goto exit; } /* Set up and register clockevents */ @@ -254,6 +258,10 @@ static int __init at91sam926x_pit_dt_init(struct device_node *node) clockevents_register_device(&data->clkevt); return 0; + +exit: + kfree(data); + return ret; } TIMER_OF_DECLARE(at91sam926x_pit, "atmel,at91sam9260-pit", at91sam926x_pit_dt_init);