diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-05-11 21:45:21 +0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-05-11 21:45:21 +0400 |
| commit | 254c44ea822066e24ab5efbdff1e43b8fe45ae76 (patch) | |
| tree | 547f6fd4ce1bd6dba6a5cc5184df28501d550795 /drivers/mmc/host/sdhci.c | |
| parent | 7b76415375ba91f5a06f8d5179278c03d6151d16 (diff) | |
| parent | 6ac77e469e991e9dd91b28e503fa24b5609eedba (diff) | |
| download | linux-254c44ea822066e24ab5efbdff1e43b8fe45ae76.tar.xz | |
Merge branch 'gic-fasteoi' of git://linux-arm.org/linux-2.6-wd into devel-stable
Diffstat (limited to 'drivers/mmc/host/sdhci.c')
| -rw-r--r-- | drivers/mmc/host/sdhci.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 9e15f41f87be..5d20661bc357 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1334,6 +1334,13 @@ static void sdhci_tasklet_finish(unsigned long param) host = (struct sdhci_host*)param; + /* + * If this tasklet gets rescheduled while running, it will + * be run again afterwards but without any active request. + */ + if (!host->mrq) + return; + spin_lock_irqsave(&host->lock, flags); del_timer(&host->timer); @@ -1345,7 +1352,7 @@ static void sdhci_tasklet_finish(unsigned long param) * upon error conditions. */ if (!(host->flags & SDHCI_DEVICE_DEAD) && - (mrq->cmd->error || + ((mrq->cmd && mrq->cmd->error) || (mrq->data && (mrq->data->error || (mrq->data->stop && mrq->data->stop->error))) || (host->quirks & SDHCI_QUIRK_RESET_AFTER_REQUEST))) { |
