Thread (28 messages) flat view 28 messages, 2 authors, 15h ago

Re: [PATCH v2 01/22] alpha: enter hardirq context before looking up the irq descriptor

From: Magnus Lindholm <linmag7@gmail.com>
Date: 2026-09-06 08:54:14
Also in: linux-doc, linux-hardening, lkml

Hi Matt,

On Sat, Sep 5, 2026 at 9:29 PM Matt Turner [off-list ref] wrote:
quoted hunk ↗ jump to hunk
handle_irq() called irq_to_desc() before irq_enter(), so that lookup ran
with the preempt count still saying task context and with RCU not yet
watching.  Generic code called from an interrupt handler should see
hardirq context, and irq_to_desc() is more than an array index once
SPARSE_IRQ is in use.

Move irq_enter() to the top of the function and add the matching
irq_exit() to the invalid interrupt path.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Matt Turner <mattst88@gmail.com>
---
 arch/alpha/kernel/irq.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c
index 4a6a8b1d5a8b..5867a1655045 100644
--- a/arch/alpha/kernel/irq.c
+++ b/arch/alpha/kernel/irq.c
@@ -107,18 +107,21 @@ handle_irq(int irq)
         * handled by some other CPU. (or is disabled)
         */
        static unsigned int illegal_count=0;
-       struct irq_desc *desc = irq_to_desc(irq);
-
+       struct irq_desc *desc;
+
+       irq_enter();
+
+       desc = irq_to_desc(irq);
        if (!desc || ((unsigned) irq > ACTUAL_NR_IRQS &&
            illegal_count < MAX_ILLEGAL_IRQS)) {
                irq_err_count++;
                illegal_count++;
                printk(KERN_CRIT "device_interrupt: invalid interrupt %d\n",
                       irq);
+               irq_exit();
                return;
        }

-       irq_enter();
        generic_handle_irq_desc(desc);
        irq_exit();
 }
Since this patch is unchanged in v2, and we agreed to handle the
hardirq-context consolidation as a follow-up, my tags from reviewing
and testing the current change are:

Tested-by: Magnus Lindholm <linmag7@gmail.com>
Reviewed-by: Magnus Lindholm <linmag7@gmail.com>

Regards,
Magnus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help