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. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Tested-by: Arun KS <getarunks@gmail.com> Cc: Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ryan Mallon <rmallon@gmail.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
||
|---|---|---|
| .. | ||
| include/mach | ||
| adssphere.c | ||
| clock.c | ||
| core.c | ||
| crunch-bits.S | ||
| crunch.c | ||
| dma.c | ||
| edb93xx.c | ||
| gesbc9312.c | ||
| Kconfig | ||
| Makefile | ||
| Makefile.boot | ||
| micro9.c | ||
| simone.c | ||
| snappercl15.c | ||
| soc.h | ||
| ts72xx.c | ||
| ts72xx.h | ||
| vision_ep9307.c | ||