[SRU][Precise] x86: mm/fault: Fix semaphore imbalance

Luis Henriques luis.henriques at canonical.com
Thu Mar 12 11:34:36 UTC 2015

From: Ben Hutchings <ben at decadent.org.uk>

When backporting commit 33692f27597f ('vm: add VM_FAULT_SIGSEGV
handling support') I didn't notice that it depended on a recent change
to the locking context of mm_fault_error() (commit 7fb08eca4527,
'x86: mm: move mmap_sem unlock from mm_fault_error() to caller').
That isn't easily applicable to 3.2, so instead make sure we drop
mm->mmap_sem on the new branch of mm_fault_error().

Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
(cherry picked from commit 6749fd110bf44164782df9bba86c0327474446b9 linux-3.2.y)
BugLink: http://bugs.launchpad.net/bugs/1431280
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
 arch/x86/mm/fault.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 8cac08822a0f..351590ec87b8 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -878,7 +878,7 @@ mm_fault_error(struct pt_regs *regs, unsigned long error_code,
 			do_sigbus(regs, error_code, address, fault);
 		else if (fault & VM_FAULT_SIGSEGV)
-			bad_area_nosemaphore(regs, error_code, address);
+			bad_area(regs, error_code, address);

More information about the kernel-team mailing list