[PATCH 5/6] m68k/irq: Add empty irq_eoi callback to auto/user IRQ chips
From: Kuan-Wei Chiu
Date: Tue Sep 08 2026 - 05:50:11 EST
When an irq_chip lacks an irq_eoi callback, chained_irq_enter() falls
back to invoking chip->irq_mask(). On auto_irq_chip and user_irq_chip,
this leads to a NULL pointer dereference because autovector interrupts
are masked via the CPU SR rather than dedicated mask registers.
Add a no-op m68k_irq_eoi() callback to auto_irq_chip and user_irq_chip
so chained interrupt handlers can safely attach to these chips.
Signed-off-by: Kuan-Wei Chiu <visitorckw@xxxxxxxxx>
---
arch/m68k/kernel/ints.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c
index cf2b13488476..731d04ac95bd 100644
--- a/arch/m68k/kernel/ints.c
+++ b/arch/m68k/kernel/ints.c
@@ -33,16 +33,22 @@ extern u16 user_irqvec_fixup[];
static int m68k_first_user_vec;
+static void m68k_irq_eoi(struct irq_data *data)
+{
+}
+
static struct irq_chip auto_irq_chip = {
.name = "auto",
.irq_startup = m68k_irq_startup,
.irq_shutdown = m68k_irq_shutdown,
+ .irq_eoi = m68k_irq_eoi,
};
static struct irq_chip user_irq_chip = {
.name = "user",
.irq_startup = m68k_irq_startup,
.irq_shutdown = m68k_irq_shutdown,
+ .irq_eoi = m68k_irq_eoi,
};
/*
--
2.55.0.979.g7e5102b832-goog