[PATCH] mmc: sdhci-s3c: check clk_prepare_enable return in probe

From: Jiawen Liu

Date: Tue Aug 18 2026 - 09:17:15 EST


sdhci_s3c_probe() ignores the return value of
clk_prepare_enable(sc->clk_io). If this call fails, the clock is not
enabled, but the driver continues and later calls
clk_disable_unprepare() on it, leading to an unbalanced clock
disable/unprepare.

Fix this by checking the return value and propagating the error,
cleaning up only resources acquired before the failed enable.

Signed-off-by: jiawen <1298662399@xxxxxx>
---
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c
--- a/drivers/mmc/host/sdhci-s3c.c
+++ b/drivers/mmc/host/sdhci-s3c.c
@@ -534,7 +534,11 @@
}

/* enable the local io clock and keep it running for the moment. */
- clk_prepare_enable(sc->clk_io);
+ ret = clk_prepare_enable(sc->clk_io);
+ if (ret) {
+ dev_err(dev, "failed to enable io clock\n");
+ return ret;
+ }

for (clks = 0, ptr = 0; ptr < MAX_BUS_CLK; ptr++) {
char name[14];