mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
mmc: meson-gx: fix error path in meson_mmc_clk_init / meson_mmc_probe
The condition should be "if (ret)" as the disable/unprepare is supposed to be executed if the previous command fails. In addition adjust the error path in probe to properly deal with the case that cfg_div_clk can be registered successfully but enable/prepare fails. In this case we shouldn't call clk_disable_unprepare. Reported-by: Michał Zegan <webczat_200@poczta.onet.pl> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Acked-by: Kevin Hilman <khilman@baylibre.com> Tested-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
e9883ef228
commit
cac3a47855
@ -321,7 +321,7 @@ static int meson_mmc_clk_init(struct meson_host *host)
|
||||
host->mmc->f_min = clk_round_rate(host->cfg_div_clk, 400000);
|
||||
|
||||
ret = meson_mmc_clk_set(host, host->mmc->f_min);
|
||||
if (!ret)
|
||||
if (ret)
|
||||
clk_disable_unprepare(host->cfg_div_clk);
|
||||
|
||||
return ret;
|
||||
@ -771,7 +771,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
|
||||
meson_mmc_irq_thread, IRQF_SHARED,
|
||||
DRIVER_NAME, host);
|
||||
if (ret)
|
||||
goto free_host;
|
||||
goto err_div_clk;
|
||||
|
||||
mmc->max_blk_count = CMD_CFG_LENGTH_MASK;
|
||||
mmc->max_req_size = mmc->max_blk_count * mmc->max_blk_size;
|
||||
@ -784,7 +784,7 @@ static int meson_mmc_probe(struct platform_device *pdev)
|
||||
if (host->bounce_buf == NULL) {
|
||||
dev_err(host->dev, "Unable to map allocate DMA bounce buffer.\n");
|
||||
ret = -ENOMEM;
|
||||
goto free_host;
|
||||
goto err_div_clk;
|
||||
}
|
||||
|
||||
mmc->ops = &meson_mmc_ops;
|
||||
@ -792,8 +792,9 @@ static int meson_mmc_probe(struct platform_device *pdev)
|
||||
|
||||
return 0;
|
||||
|
||||
free_host:
|
||||
err_div_clk:
|
||||
clk_disable_unprepare(host->cfg_div_clk);
|
||||
free_host:
|
||||
clk_disable_unprepare(host->core_clk);
|
||||
mmc_free_host(mmc);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user