[PATCH 2/2] drm/kmb: unwind partially enabled DSI clocks on error
From: Osama Abdelkader
Date: Mon Apr 20 2026 - 11:43:32 EST
If enabling clk_mipi_ecfg or clk_mipi_cfg fails, disable any clocks that
were successfully prepared/enabled earlier in kmb_dsi_clk_enable().
This avoids leaking enabled clocks on probe failure paths.
Signed-off-by: Osama Abdelkader <osama.abdelkader@xxxxxxxxx>
---
drivers/gpu/drm/kmb/kmb_dsi.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/kmb/kmb_dsi.c b/drivers/gpu/drm/kmb/kmb_dsi.c
index 500dc00ba6ae..3ec16b1aa16c 100644
--- a/drivers/gpu/drm/kmb/kmb_dsi.c
+++ b/drivers/gpu/drm/kmb/kmb_dsi.c
@@ -1526,17 +1526,23 @@ static int kmb_dsi_clk_enable(struct kmb_dsi *kmb_dsi)
ret = clk_prepare_enable(kmb_dsi->clk_mipi_ecfg);
if (ret) {
dev_err(dev, "Failed to enable MIPI_ECFG clock: %d\n", ret);
- return ret;
+ goto err_disable_mipi;
}
ret = clk_prepare_enable(kmb_dsi->clk_mipi_cfg);
if (ret) {
dev_err(dev, "Failed to enable MIPI_CFG clock: %d\n", ret);
- return ret;
+ goto err_disable_mipi_ecfg;
}
dev_info(dev, "SUCCESS : enabled MIPI clocks\n");
return 0;
+
+err_disable_mipi_ecfg:
+ clk_disable_unprepare(kmb_dsi->clk_mipi_ecfg);
+err_disable_mipi:
+ clk_disable_unprepare(kmb_dsi->clk_mipi);
+ return ret;
}
int kmb_dsi_clk_init(struct kmb_dsi *kmb_dsi)
--
2.43.0