Bug in _und_usr on dual-core ARM?

Rabin Vincent rabin at rab.in
Fri Apr 20 08:37:19 EDT 2012


On Tue, Jun 21, 2011 at 14:45, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Tue, Jun 21, 2011 at 04:31:19PM +0800, TAO HU wrote:
>> We got an issue on our OMAP4 SMP system.
>> Looks like __und_user(), which was triggered by a user space
>> exception, got a page fault hence lead to might_sleep() failure.
>
> Could you see whether this patch prevents the warning please.
>
> diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
> index bc0e1d8..d52b940 100644
> --- a/arch/arm/mm/fault.c
> +++ b/arch/arm/mm/fault.c
> @@ -289,7 +289,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
>         * If we're in an interrupt or have no user
>         * context, we must not take the fault..
>         */
> -       if (in_atomic() || !mm)
> +       if (in_atomic() || irqs_disabled() || !mm)
>                goto no_context;
>
>        /*

I am able to trigger the discussed warning on current mainline with a
constructed test case, and the above patch does prevent it.  Could it
please be applied?



More information about the linux-arm-kernel mailing list