From: JP Abgrall Date: Mon, 29 Apr 2013 23:07:00 +0000 (-0700) Subject: ARM: fault: assume no context when IRQs are disabled during data abort. X-Git-Tag: firefly_0821_release~2958^2~126 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=487e34bfedac629ad8af0471ab72ab553871e810;p=firefly-linux-kernel-4.4.55.git ARM: fault: assume no context when IRQs are disabled during data abort. Bail out early if IRQs are disabled in do_page_fault or else [14415.157266] BUG: sleeping function called from invalid context at arch/arm/mm/fault.c:301 Russell King's idea from http://comments.gmane.org/gmane.linux.ports.arm.omap/59256 Signed-off-by: JP Abgrall --- diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index daafcf121ce0..506c225c66cc 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -273,10 +273,10 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) local_irq_enable(); /* - * If we're in an interrupt or have no user + * If we're in an interrupt, or have no irqs, or have no user * context, we must not take the fault.. */ - if (faulthandler_disabled() || !mm) + if (faulthandler_disabled() || irqs_disabled() || !mm) goto no_context; if (user_mode(regs))