[PATCH] clk: tegra: tegra124-emc: Fix a reference leak in emc_ensure_emc_driver()

Haoxiang Li posted 1 patch 2 weeks, 3 days ago
drivers/clk/tegra/clk-tegra124-emc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] clk: tegra: tegra124-emc: Fix a reference leak in emc_ensure_emc_driver()
Posted by Haoxiang Li 2 weeks, 3 days ago
put_device() is only called on the error path, causing a reference leak
on the success path. Fix this by calling put_device() once pdev is no
longer needed.

Fixes: 6d6ef58c2470 ("clk: tegra: tegra124-emc: Fix missing put_device() call in emc_ensure_emc_driver")
Cc: stable@vger.kernel.org
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
---
 drivers/clk/tegra/clk-tegra124-emc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/tegra/clk-tegra124-emc.c b/drivers/clk/tegra/clk-tegra124-emc.c
index 2a6db0434281..b9f2f47ec6e5 100644
--- a/drivers/clk/tegra/clk-tegra124-emc.c
+++ b/drivers/clk/tegra/clk-tegra124-emc.c
@@ -197,8 +197,9 @@ static struct tegra_emc *emc_ensure_emc_driver(struct tegra_clk_emc *tegra)
 	tegra->emc_node = NULL;
 
 	tegra->emc = platform_get_drvdata(pdev);
+	put_device(&pdev->dev);
+
 	if (!tegra->emc) {
-		put_device(&pdev->dev);
 		pr_err("%s: cannot find EMC driver\n", __func__);
 		return NULL;
 	}
-- 
2.25.1
Re: [PATCH] clk: tegra: tegra124-emc: Fix a reference leak in emc_ensure_emc_driver()
Posted by Markus Elfring 2 weeks, 2 days ago
> put_device() is only called on the error path, causing a reference leak
> on the success path. Fix this by calling put_device() once pdev is no
> longer needed.

How do you think about to increase the application of scope-based resource management?
https://elixir.bootlin.com/linux/v6.17-rc6/source/include/linux/device.h#L1180
https://elixir.bootlin.com/linux/v6.17-rc6/source/include/linux/of.h#L138

Regards,
Markus