From nobody Fri Sep 20 20:34:22 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 065D4C6FD18 for ; Sat, 22 Apr 2023 08:46:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229596AbjDVIq4 (ORCPT ); Sat, 22 Apr 2023 04:46:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229468AbjDVIqx (ORCPT ); Sat, 22 Apr 2023 04:46:53 -0400 Received: from hust.edu.cn (unknown [202.114.0.240]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97AC719AD; Sat, 22 Apr 2023 01:46:52 -0700 (PDT) Received: from bosi.. ([10.12.190.56]) (user=u201911157@hust.edu.cn mech=LOGIN bits=0) by mx1.hust.edu.cn with ESMTP id 33M8i4Mk027977-33M8i4Ml027977 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 22 Apr 2023 16:44:14 +0800 From: Bosi Zhang To: Michael Turquette , Stephen Boyd , Matthias Brugger , AngeloGioacchino Del Regno , Ikjoon Jang , Weiyi Lu , Chun-Jie Chen Cc: hust-os-kernel-patches@googlegroups.com, Bosi Zhang , Dongliang Mu , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: [PATCH] clk: mediatek: fix of_iomap memory leak Date: Sat, 22 Apr 2023 08:43:31 +0000 Message-Id: <20230422084331.47198-1-u201911157@hust.edu.cn> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-FEAS-AUTH-USER: u201911157@hust.edu.cn Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Smatch reports: drivers/clk/mediatek/clk-mtk.c:583 mtk_clk_simple_probe() warn: 'base' from of_iomap() not released on lines: 496. This problem was also found in linux-next. In mtk_clk_simple_probe(), base is not released when handling errors if clk_data is not existed, which may cause a leak. So free_base should be added here to release base. Fixes: c58cd0e40ffa ("clk: mediatek: Add mtk_clk_simple_probe() to simplify= clock providers") Signed-off-by: Bosi Zhang Reviewed-by: Dongliang Mu --- The issue is found by static analysis and remains untested. --- drivers/clk/mediatek/clk-mtk.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/clk/mediatek/clk-mtk.c b/drivers/clk/mediatek/clk-mtk.c index fd2214c3242f..3c50f48e93a7 100644 --- a/drivers/clk/mediatek/clk-mtk.c +++ b/drivers/clk/mediatek/clk-mtk.c @@ -500,8 +500,10 @@ static int __mtk_clk_simple_probe(struct platform_devi= ce *pdev, num_clks +=3D mcd->num_mux_clks + mcd->num_divider_clks; =20 clk_data =3D mtk_alloc_clk_data(num_clks); - if (!clk_data) - return -ENOMEM; + if (!clk_data) { + r =3D -ENOMEM; + goto free_base; + } =20 if (mcd->fixed_clks) { r =3D mtk_clk_register_fixed_clks(mcd->fixed_clks, @@ -599,6 +601,7 @@ static int __mtk_clk_simple_probe(struct platform_devic= e *pdev, mcd->num_fixed_clks, clk_data); free_data: mtk_free_clk_data(clk_data); +free_base: if (mcd->shared_io && base) iounmap(base); return r; --=20 2.34.1