[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <773fc8425c3b8f5b0ca7c1d89f15b65831a85ca9.1705850155.git.christophe.jaillet@wanadoo.fr>
Date: Sun, 21 Jan 2024 16:16:24 +0100
From: Christophe JAILLET <christophe.jaillet@...adoo.fr>
To: Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>,
Dongjiu Geng <gengdongjiu@...wei.com>
Cc: linux-kernel@...r.kernel.org,
kernel-janitors@...r.kernel.org,
Christophe JAILLET <christophe.jaillet@...adoo.fr>,
linux-clk@...r.kernel.org
Subject: [PATCH] clk: hisilicon: hi3559a: Fix an erroneous devm_kfree()
'p_clk' is an array allocated just before the for loop for all clk that
need to be registered.
It is incremented at each loop iteration.
If a clk_register() call fails, 'p_clk' may point to something different
from what should be freed.
The best we can do, is to avoid this wrong release of memory.
Fixes: 6c81966107dc ("clk: hisilicon: Add clock driver for hi3559A SoC")
Signed-off-by: Christophe JAILLET <christophe.jaillet@...adoo.fr>
---
devm_kfree() is clearly wrong (IMHO :)), but just removing it is maybe not
the best solution.
Should hisi_clk_register_pll() return an error?
Should some data->clk_data.clks[clks[i].id] be set to NULL?
(hisi_clk_alloc() doesn't zero the allocated memory)
Should hisi_clk_alloc() use kzalloc() when allocating clk_table?
---
drivers/clk/hisilicon/clk-hi3559a.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/clk/hisilicon/clk-hi3559a.c b/drivers/clk/hisilicon/clk-hi3559a.c
index ff4ca0edce06..4623befafaec 100644
--- a/drivers/clk/hisilicon/clk-hi3559a.c
+++ b/drivers/clk/hisilicon/clk-hi3559a.c
@@ -491,7 +491,6 @@ static void hisi_clk_register_pll(struct hi3559av100_pll_clock *clks,
clk = clk_register(NULL, &p_clk->hw);
if (IS_ERR(clk)) {
- devm_kfree(dev, p_clk);
dev_err(dev, "%s: failed to register clock %s\n",
__func__, clks[i].name);
continue;
--
2.43.0
Powered by blists - more mailing lists