diff options
author | Asutosh Das <asutoshd@codeaurora.org> | 2014-02-21 11:28:36 +0530 |
---|---|---|
committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-27 10:29:03 -0700 |
commit | 03cfbbc1fc06db50991da48593bf6c2ee7cf092a (patch) | |
tree | d5d0ac4e4e550e307d744bf5d5bdc20bfe4cb029 /drivers | |
parent | 1fc03424501669b8d6df474c42328123a4297055 (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.c | 3 |
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; } |