Skip to content

Commit 8464dd5

Browse files
lyakhcjb
authored andcommitted
mmc: sh-mmcif: avoid oops on spurious interrupts
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 <koba@kmckk.co.jp> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Cc: stable <stable@vger.kernel.org> Signed-off-by: Chris Ball <cjb@laptop.org>
1 parent 7a7eb32 commit 8464dd5

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

drivers/mmc/host/sh_mmcif.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1231,6 +1231,10 @@ static irqreturn_t sh_mmcif_intr(int irq, void *dev_id)
12311231
host->sd_error = true;
12321232
dev_dbg(&host->pd->dev, "int err state = %08x\n", state);
12331233
}
1234+
if (host->state == STATE_IDLE) {
1235+
dev_info(&host->pd->dev, "Spurious IRQ status 0x%x", state);
1236+
return IRQ_HANDLED;
1237+
}
12341238
if (state & ~(INT_CMD12RBE | INT_CMD12CRE)) {
12351239
if (!host->dma_active)
12361240
return IRQ_WAKE_THREAD;

0 commit comments

Comments
 (0)