]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr
authorCatalin Marinas <catalin.marinas@arm.com>
Tue, 22 Apr 2014 15:14:29 +0000 (16:14 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 25 Apr 2014 11:06:38 +0000 (12:06 +0100)
commit7654a3c1aa2048eb3e2d910841f5bd26d16368fc
tree82fe7a3cb59ff82ddb74a8ebc6ff2d2e9237733b
parent05e9890a05a0a8967c57b20ba37d5086ac8e2d81
ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr

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>
arch/arm/kernel/entry-armv.S
arch/arm/kernel/iwmmxt.S
arch/arm/mach-ep93xx/crunch-bits.S
arch/arm/vfp/entry.S