diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 320c294b9d73c482677dbfdc89b869309131c19d..dce31b798180a6f70e055c155f109b3c364c2580 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -935,6 +935,15 @@ static bool sdhci_needs_reset(struct sdhci_host *host, struct mmc_request *mrq) static void sdhci_finish_mrq(struct sdhci_host *host, struct mmc_request *mrq) { + if (host->cmd && host->cmd->mrq == mrq) + host->cmd = NULL; + + if (host->data_cmd && host->data_cmd->mrq == mrq) + host->data_cmd = NULL; + + if (host->data && host->data->mrq == mrq) + host->data = NULL; + if (sdhci_needs_reset(host, mrq)) host->pending_reset = true; @@ -2240,9 +2249,6 @@ static void sdhci_tasklet_finish(unsigned long param) } host->mrq = NULL; - host->cmd = NULL; - host->data = NULL; - host->data_cmd = NULL; sdhci_led_deactivate(host);