From: Heiner Kallweit <hkallweit1@gmail.com> To: Ulf Hansson <ulf.hansson@linaro.org>, Kevin Hilman <khilman@baylibre.com> Cc: "linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>, linux-amlogic@lists.infradead.org, "Michał Zegan" <webczat_200@poczta.onet.pl> Subject: [PATCH v3 6/10] mmc: meson-gx: fix error path in meson_mmc_clk_init / meson_mmc_probe Date: Sat, 18 Feb 2017 14:19:32 +0100 [thread overview] Message-ID: <8419d592-1338-d7eb-3a75-342b64897922@gmail.com> (raw) In-Reply-To: <583f6496-68a9-b8e1-6b25-1f073f819a3c@gmail.com> 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> --- v2: - extended commit message v3: - adjust error path in probe --- drivers/mmc/host/meson-gx-mmc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c index 68e76fa8..002e4aac 100644 --- a/drivers/mmc/host/meson-gx-mmc.c +++ b/drivers/mmc/host/meson-gx-mmc.c @@ -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; -- 2.11.1
WARNING: multiple messages have this Message-ID (diff)
From: hkallweit1@gmail.com (Heiner Kallweit) To: linus-amlogic@lists.infradead.org Subject: [PATCH v3 6/10] mmc: meson-gx: fix error path in meson_mmc_clk_init / meson_mmc_probe Date: Sat, 18 Feb 2017 14:19:32 +0100 [thread overview] Message-ID: <8419d592-1338-d7eb-3a75-342b64897922@gmail.com> (raw) In-Reply-To: <583f6496-68a9-b8e1-6b25-1f073f819a3c@gmail.com> 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> --- v2: - extended commit message v3: - adjust error path in probe --- drivers/mmc/host/meson-gx-mmc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c index 68e76fa8..002e4aac 100644 --- a/drivers/mmc/host/meson-gx-mmc.c +++ b/drivers/mmc/host/meson-gx-mmc.c @@ -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; -- 2.11.1
next prev parent reply other threads:[~2017-02-18 13:27 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-02-18 11:50 [PATCH v3 1/10] mmc: meson-gx: simplify bounce buffer setting in meson_mmc_start_cmd Heiner Kallweit 2017-02-18 11:50 ` Heiner Kallweit 2017-02-18 13:06 ` [PATCH v3 2/10] mmc: meson-gx: make two functions return void Heiner Kallweit 2017-02-18 13:06 ` Heiner Kallweit 2017-02-18 13:07 ` [PATCH v3 3/10] mmc: meson-gx: remove unused members irq, ocr_mask from struct meson_host Heiner Kallweit 2017-02-18 13:07 ` Heiner Kallweit 2017-02-18 13:08 ` [PATCH v3 4/10] mmc: meson-gx: remove unneeded variable in meson_mmc_clk_init Heiner Kallweit 2017-02-18 13:08 ` Heiner Kallweit 2017-02-18 13:09 ` [PATCH v3 5/10] mmc: meson-gx: remove member parent_mux from struct meson_host Heiner Kallweit 2017-02-18 13:09 ` Heiner Kallweit 2017-02-18 13:19 ` Heiner Kallweit [this message] 2017-02-18 13:19 ` [PATCH v3 6/10] mmc: meson-gx: fix error path in meson_mmc_clk_init / meson_mmc_probe Heiner Kallweit 2017-02-18 13:57 ` Michał Zegan 2017-02-18 13:57 ` Michał Zegan 2017-02-18 15:22 ` Heiner Kallweit 2017-02-18 15:22 ` Heiner Kallweit 2017-02-18 15:30 ` Michał Zegan 2017-02-18 15:30 ` Michał Zegan 2017-02-28 3:06 ` Kevin Hilman 2017-02-28 3:06 ` Kevin Hilman 2017-02-18 13:20 ` [PATCH v3 7/10] mmc: meson-gx: remove unneeded devm_kstrdup in meson_mmc_clk_init Heiner Kallweit 2017-02-18 13:20 ` Heiner Kallweit 2017-02-18 13:22 ` [PATCH v3 8/10] mmc: meson-gx: improve initial configuration Heiner Kallweit 2017-02-18 13:22 ` Heiner Kallweit 2017-02-18 13:23 ` [PATCH v3 9/10] mmc: meson-gx: remove member mrq from struct meson_host Heiner Kallweit 2017-02-18 13:23 ` Heiner Kallweit 2017-02-18 13:26 ` [PATCH v3 10/10] mmc: meson-gx: replace magic timeout numbers with constants Heiner Kallweit 2017-02-18 13:26 ` Heiner Kallweit 2017-02-28 3:07 ` Kevin Hilman 2017-02-28 3:07 ` Kevin Hilman 2017-03-01 18:09 ` [PATCH v3 1/10] mmc: meson-gx: simplify bounce buffer setting in meson_mmc_start_cmd Kevin Hilman 2017-03-01 18:09 ` Kevin Hilman 2017-03-01 20:20 ` Heiner Kallweit 2017-03-01 20:20 ` Heiner Kallweit 2017-03-03 18:17 ` Kevin Hilman 2017-03-03 18:17 ` Kevin Hilman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=8419d592-1338-d7eb-3a75-342b64897922@gmail.com \ --to=hkallweit1@gmail.com \ --cc=khilman@baylibre.com \ --cc=linux-amlogic@lists.infradead.org \ --cc=linux-mmc@vger.kernel.org \ --cc=ulf.hansson@linaro.org \ --cc=webczat_200@poczta.onet.pl \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.