parisc: don't enable irqs unconditionally in handle_interruption()
authorSven Schnelle <svens@stackframe.org>
Fri, 15 Oct 2021 19:56:12 +0000 (21:56 +0200)
committerHelge Deller <deller@gmx.de>
Thu, 4 Nov 2021 10:21:20 +0000 (11:21 +0100)
If the previous context had interrupts disabled, we should better
keep them disabled. This was noticed in the unwinding code where
a copy_from_kernel_nofault() triggered a page fault, and after
the fixup by the page fault handler interrupts where suddenly
enabled.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/traps.c

index 690e6ab..b11fb26 100644 (file)
@@ -481,7 +481,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
 
        if (code == 1)
            pdc_console_restart();  /* switch back to pdc if HPMC */
-       else
+       else if (!irqs_disabled_flags(regs->gr[0]))
            local_irq_enable();
 
        /* Security check: