mmc: sdhci-pxav2: add error handling of clk_prepare_enable()
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Fri, 10 Feb 2017 22:54:46 +0000 (01:54 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 24 Apr 2017 19:41:13 +0000 (21:41 +0200)
There is no check if clk_prepare_enable() succeed in sdhci_pxav2_probe().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-pxav2.c

index 347eae2d7b6a7b5d05acee8a66fd85cb14c45735..80513f54e9d419a5680bab3a72d2b664d5edd498 100644 (file)
@@ -185,7 +185,11 @@ static int sdhci_pxav2_probe(struct platform_device *pdev)
                goto err_clk_get;
        }
        pltfm_host->clk = clk;
-       clk_prepare_enable(clk);
+       ret = clk_prepare_enable(clk);
+       if (ret) {
+               dev_err(&pdev->dev, "failed to enable io clock\n");
+               goto err_clk_enable;
+       }
 
        host->quirks = SDHCI_QUIRK_BROKEN_ADMA
                | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL
@@ -228,6 +232,7 @@ static int sdhci_pxav2_probe(struct platform_device *pdev)
 
 err_add_host:
        clk_disable_unprepare(clk);
+err_clk_enable:
        clk_put(clk);
 err_clk_get:
        sdhci_pltfm_free(pdev);