mmc: core: clear 'doing_init_tune' also after failures
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 14 Sep 2020 11:28:45 +0000 (13:28 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 14 Sep 2020 11:57:59 +0000 (13:57 +0200)
Reorganize the code, so that the flag is always cleared independently of
a good or bad case.

Fixes: 97a7d87e96b0 ("mmc: core: add a 'doing_init_tune' flag and a 'mmc_doing_tune' helper")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Link: https://lore.kernel.org/r/20200914112845.21855-1-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/mmc.c

index 67e95eba0e82d91d45585ef8f163b3801d79c1da..ff3063ce2acda41e12ec2c611b06fc4019960d51 100644 (file)
@@ -1766,14 +1766,14 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
                host->doing_init_tune = 1;
 
                err = mmc_hs200_tuning(card);
-               if (err)
-                       goto free_card;
+               if (!err)
+                       err = mmc_select_hs400(card);
+
+               host->doing_init_tune = 0;
 
-               err = mmc_select_hs400(card);
                if (err)
                        goto free_card;
 
-               host->doing_init_tune = 0;
        } else if (!mmc_card_hs400es(card)) {
                /* Select the desired bus width optionally */
                err = mmc_select_bus_width(card);