From: Guennadi Liakhovetski <[email protected]>

This is back port to LTSI 3.4.

On some systems, e.g., kzm9g, MMCIF interfaces can produce spurious
interrupts without any active request. To prevent the Oops, that results
in such cases, don't dereference the mmc request pointer until we make
sure, that we are indeed processing such a request.

Reported-by: Tetsuyuki Kobayashi <[email protected]>
Signed-off-by: Guennadi Liakhovetski <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Chris Ball <[email protected]>
(cherry picked from commit 8464dd52d3198dd05cafb005371d76e5339eb842)

Signed-off-by: Tetsuyuki Kobayashi <[email protected]>
---
 drivers/mmc/host/sh_mmcif.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
index 724b35e..3b8236b 100644
--- a/drivers/mmc/host/sh_mmcif.c
+++ b/drivers/mmc/host/sh_mmcif.c
@@ -1191,6 +1191,10 @@ static irqreturn_t sh_mmcif_intr(int irq, void *dev_id)
                host->sd_error = true;
                dev_dbg(&host->pd->dev, "int err state = %08x\n", state);
        }
+       if (host->state == STATE_IDLE) {
+               dev_info(&host->pd->dev, "Spurious IRQ status 0x%x", state);
+               return IRQ_HANDLED;
+       }
        if (state & ~(INT_CMD12RBE | INT_CMD12CRE)) {
                if (!host->dma_active)
                        return IRQ_WAKE_THREAD;
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to