Re: [PATCH] mmc: core: Avoid hanging to claim host for mmc via some nested calls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2018/2/27 19:22, Ulf Hansson wrote:
As the block layer, since the conversion to blkmq, claims the host using a
context, a following nested call to mmc_claim_host(), which isn't using a
context, may hang.

Calling mmc_interrupt_hpi() and mmc_read_bkops_status() via the mmc block
layer, may suffer from this problem, as these functions are calling
mmc_claim|release_host().

Let's fix the problem by removing the calls to mmc_claim|release_host()
from the above mentioned functions and instead make the callers responsible
of claiming/releasing the host. As a matter of fact, the existing callers
already deals with it.


Reviewed-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx>

Fixes: 81196976ed94 ("mmc: block: Add blk-mq support")
Reported-by: Dmitry Osipenko <digetx@xxxxxxxxx>
Suggested-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
Tested-by: Dmitry Osipenko <digetx@xxxxxxxxx>
Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
---
  drivers/mmc/core/mmc_ops.c | 4 ----
  1 file changed, 4 deletions(-)

diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index 908e4db..42d6aa8 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -848,7 +848,6 @@ int mmc_interrupt_hpi(struct mmc_card *card)
  		return 1;
  	}
- mmc_claim_host(card->host);
  	err = mmc_send_status(card, &status);
  	if (err) {
  		pr_err("%s: Get card status fail\n", mmc_hostname(card->host));
@@ -890,7 +889,6 @@ int mmc_interrupt_hpi(struct mmc_card *card)
  	} while (!err);
out:
-	mmc_release_host(card->host);
  	return err;
  }
@@ -932,9 +930,7 @@ static int mmc_read_bkops_status(struct mmc_card *card)
  	int err;
  	u8 *ext_csd;
- mmc_claim_host(card->host);
  	err = mmc_get_ext_csd(card, &ext_csd);
-	mmc_release_host(card->host);
  	if (err)
  		return err;


--
Best Regards
Shawn Lin

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux