[PATCH] mmc: sdhci-s3c: check clk_prepare_enable return in probe
Jiawen Liu <[email protected]>
| Newsgroups | org.kernel.vger.linux-mmc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> --- 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];