summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAsutosh Das <asutoshd@codeaurora.org>2014-02-21 11:28:36 +0530
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-27 10:29:03 -0700
commit03cfbbc1fc06db50991da48593bf6c2ee7cf092a (patch)
treed5d0ac4e4e550e307d744bf5d5bdc20bfe4cb029 /drivers
parent1fc03424501669b8d6df474c42328123a4297055 (diff)
mmc: sdhci: finish the request if sdhc is in bad state
In the current code, if sdhci_check_state returns true a tasklet is scheduled which doesn't complete the request if host->mrq is NULL, which is the case, if sdhci is in bad state. This would make the mmcqd thread wait for completion infinitely. Hence, complete the request if sdhci_check_state returns true instead of scheduling the tasklet. CRs-Fixed: 615537 Change-Id: I8e2950c3999ac3806f9d631c52d86f0dc13b992f Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/host/sdhci.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 51eae3ff259e..5e483e84aee3 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1575,7 +1575,8 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
mrq->cmd->error = -EIO;
if (mrq->data)
mrq->data->error = -EIO;
- tasklet_schedule(&host->finish_tasklet);
+ mmc_request_done(host->mmc, mrq);
+ sdhci_runtime_pm_put(host);
return;
}