mmc: sdhci: sdhci_execute_tuning() must delete timer
authorAdrian Hunter <adrian.hunter@intel.com>
Wed, 29 Jun 2016 13:24:38 +0000 (16:24 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 25 Jul 2016 08:34:45 +0000 (10:34 +0200)
sdhci_send_command() starts a timer to catch cases where the host
controller fails. The timer is normally deleted when the request completes,
but in the case of sdhci_execute_tuning() the request is handled
differently and the timer is left running. This goes unnoticed because
tuning is done before another command so the timer gets reset then.
That should not be relied upon, so make sdhci_execute_tuning() delete the
timer.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c

index 6c8cc1a1b8589abd2ea58a9be3d56e499eb12f15..2ee8bfa77116e9df9d09c8c0e43c2f00c745fe2f 100644 (file)
@@ -2057,6 +2057,7 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
                sdhci_send_command(host, &cmd);
 
                host->cmd = NULL;
+               sdhci_del_timer(host, &mrq);
 
                spin_unlock_irqrestore(&host->lock, flags);
                /* Wait for Buffer Read Ready interrupt */