mainline inclusion from mainline-v6.9-rc1 commit de8b6e1c231a95abf95ad097b993d34b31458ec9 category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I91F3H CVE: NA Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=de8b6e1c231a95abf95ad097b993d34b31458ec9 Signed-off-by: Slim6882 <yangjunshuo@huawei.com>
56 lines
1.8 KiB
Diff
56 lines
1.8 KiB
Diff
From 68ded4478d765f24d6eb5ce10b8e578f23d2ef85 Mon Sep 17 00:00:00 2001
|
|
From: Devyn Liu <liudingyuan@huawei.com>
|
|
Date: Tue, 23 Jan 2024 15:11:49 +0800
|
|
Subject: [PATCH] spi: hisi-sfc-v3xx: return IRQ_NONE if no interrupts were
|
|
detected
|
|
|
|
mainline inclusion
|
|
from mainline-v6.9-rc1
|
|
commit de8b6e1c231a95abf95ad097b993d34b31458ec9
|
|
category: bugfix
|
|
bugzilla: https://gitee.com/openeuler/kernel/issues/I91F3H
|
|
CVE: NA
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=de8b6e1c231a95abf95ad097b993d34b31458ec9
|
|
|
|
-----------------------------
|
|
|
|
Return IRQ_NONE from the interrupt handler when no interrupt was
|
|
detected. Because an empty interrupt will cause a null pointer error:
|
|
|
|
Unable to handle kernel NULL pointer dereference at virtual
|
|
address 0000000000000008
|
|
Call trace:
|
|
complete+0x54/0x100
|
|
hisi_sfc_v3xx_isr+0x2c/0x40 [spi_hisi_sfc_v3xx]
|
|
__handle_irq_event_percpu+0x64/0x1e0
|
|
handle_irq_event+0x7c/0x1cc
|
|
|
|
Signed-off-by: Devyn Liu <liudingyuan@huawei.com>
|
|
Link: https://msgid.link/r/20240123071149.917678-1-liudingyuan@huawei.com
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
Signed-off-by: Slim6882 <yangjunshuo@huawei.com>
|
|
---
|
|
drivers/spi/spi-hisi-sfc-v3xx.c | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/drivers/spi/spi-hisi-sfc-v3xx.c b/drivers/spi/spi-hisi-sfc-v3xx.c
|
|
index d3a23b1c2a4c..61bf00dfe9c3 100644
|
|
--- a/drivers/spi/spi-hisi-sfc-v3xx.c
|
|
+++ b/drivers/spi/spi-hisi-sfc-v3xx.c
|
|
@@ -377,6 +377,11 @@ static const struct spi_controller_mem_ops hisi_sfc_v3xx_mem_ops = {
|
|
static irqreturn_t hisi_sfc_v3xx_isr(int irq, void *data)
|
|
{
|
|
struct hisi_sfc_v3xx_host *host = data;
|
|
+ u32 reg;
|
|
+
|
|
+ reg = readl(host->regbase + HISI_SFC_V3XX_INT_STAT);
|
|
+ if (!reg)
|
|
+ return IRQ_NONE;
|
|
|
|
hisi_sfc_v3xx_disable_int(host);
|
|
|
|
--
|
|
2.33.0
|
|
|