powerpc: Fix might-sleep warning in program check exception handler
authorPaul Mackerras <paulus@samba.org>
Fri, 3 Mar 2006 06:11:40 +0000 (17:11 +1100)
committerPaul Mackerras <paulus@samba.org>
Fri, 3 Mar 2006 06:11:40 +0000 (17:11 +1100)
On 32-bit, the exception prolog for the program check exception doesn't
enable interrupts early on.  If it is an illegal instruction exception,
we read the instruction in order to emulate certain instructions, and
the get_user of the instruction triggers a WARN_ON since interrupts
are still disabled.  This adds a local_irq_enable() to enable
interrupts before reading the instruction.

Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/traps.c

index 7509aa6474f2e7c03deb7fa896b658fd31f6247f..98660aedeeb77234865edaf7075fea0ca29da9df 100644 (file)
@@ -814,6 +814,8 @@ void __kprobes program_check_exception(struct pt_regs *regs)
                return;
        }
 
+       local_irq_enable();
+
        /* Try to emulate it if we should. */
        if (reason & (REASON_ILLEGAL | REASON_PRIVILEGED)) {
                switch (emulate_instruction(regs)) {