[PATCH v2] clk/samsung: fix parent clock refcount leak in exynos_clkout_probe
WenTao Liang <[email protected]>
| Newsgroups | org.kernel.vger.linux-samsung-soc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
of_clk_get_by_name() acquires clock references stored in the local parents[] array. All error paths correctly release these via the clks_put label, but the success path returns 0 without releasing the parent references. The references were only needed to obtain clock names for registration and are permanently leaked after probe completes. Suggested-by: Greg KH <[email protected]> Fixes: 9484f2cb8332 ("clk: samsung: exynos-clkout: convert to module driver") Cc: [email protected] Signed-off-by: WenTao Liang <[email protected]> --- Changes in v2: - Fix patch format based on reviewer feedback --- drivers/clk/samsung/clk-exynos-clkout.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/clk/samsung/clk-exynos-clkout.c b/drivers/clk/samsung/clk-exynos-clkout.c index 5b21025338bd..71724b56de69 100644 --- a/drivers/clk/samsung/clk-exynos-clkout.c +++ b/drivers/clk/samsung/clk-exynos-clkout.c @@ -190,6 +190,10 @@ static int exynos_clkout_probe(struct platform_device *pdev) if (ret) goto err_clk_unreg; + for (i = 0; i < parent_count; ++i) + if (!IS_ERR(parents[i])) + clk_put(parents[i]); + return 0; err_clk_unreg: -- 2.39.5 (Apple Git-154)