[PATCH 5/5] arm: Enable IRQs before attempting to read user space in __und_usr
Alexey Ignatov
ignatov.a at samsung.com
Thu Nov 21 04:35:34 EST 2013
Catalin Marinas <catalin.marinas <at> arm.com> writes:
> The Undef abort handler in the kernel reads the undefined instruction
> from user space. If the page table was modified from another CPU, the
> user access could fail and do_page_fault() will be executed with
> interrupts disabled. This can potentially deadlock on ARM11MPCore or on
> Cortex-A15 with erratum 798181 workaround enabled (both implying IPI for
> TLB maintenance with page table lock held).
>
> This patch enables the IRQs in __und_usr before attempting to read the
> instruction from user space.
This patch moves enable_irq call from do_fpe directly to __und_usr handler,
but __und_svc handler also calls do_fpe (via call_fpe), so now this codepath
runs with disabled irqs. This behavior change doesn't look good for me.
More information about the linux-arm-kernel
mailing list