[PATCH] spmi: mtk-pmif: Fix clock reference leak in mtk_spmi_bus_probe()

From: Wentao Liang

Date: Thu Sep 17 2026 - 12:06:08 EST


of_clk_get_by_name() returns a reference that must be released with
clk_put(). If the lookup of a later clock fails, the function returns
without releasing the clocks that were already obtained. Put those
clocks before returning.

Fixes: 078117963b2c ("spmi: mtk-pmif: Add multi-bus support for SPMI 2.0")
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
drivers/spmi/spmi-mtk-pmif.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/spmi/spmi-mtk-pmif.c b/drivers/spmi/spmi-mtk-pmif.c
index 1048420b5afb..9323a4adefe5 100644
--- a/drivers/spmi/spmi-mtk-pmif.c
+++ b/drivers/spmi/spmi-mtk-pmif.c
@@ -726,9 +726,11 @@ static int mtk_spmi_bus_probe(struct platform_device *pdev,
for (i = 0; i < pbus->nclks; i++) {
pbus->clks[i].id = pmif_clock_names[i];
pbus->clks[i].clk = of_clk_get_by_name(node, pbus->clks[i].id);
- if (IS_ERR(pbus->clks[i].clk))
+ if (IS_ERR(pbus->clks[i].clk)) {
+ clk_bulk_put(i, pbus->clks);
return dev_err_probe(&pdev->dev, PTR_ERR(pbus->clks[i].clk),
"Failed to get clocks\n");
+ }
}

err = clk_bulk_prepare_enable(pbus->nclks, pbus->clks);
--
2.34.1