summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nicolas.pitre@linaro.org>2015-08-12 17:45:02 +0200
committerRussell King <rmk+kernel@arm.linux.org.uk>2015-08-18 14:59:59 +0200
commit0f64b247e63ac8c214efa6725366b42563ab138c (patch)
treeb328dc3eed4838935cebba95bba93b5946ca82a3
parentARM: 8410/1: VDSO: fix coarse clock monotonicity regression (diff)
downloadlinux-0f64b247e63ac8c214efa6725366b42563ab138c.tar.xz
linux-0f64b247e63ac8c214efa6725366b42563ab138c.zip
ARM: 8414/1: __copy_to_user_memcpy: fix mmap semaphore usage
The mmap semaphore should not be taken when page faults are disabled. Since pagefault_disable() no longer disables preemption, we now need to use faulthandler_disabled() in place of in_atomic(). Signed-off-by: Nicolas Pitre <nico@linaro.org> Tested-by: Mark Salter <msalter@redhat.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/lib/uaccess_with_memcpy.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
index 3e58d710013c..4b39af2dfda9 100644
--- a/arch/arm/lib/uaccess_with_memcpy.c
+++ b/arch/arm/lib/uaccess_with_memcpy.c
@@ -96,7 +96,7 @@ __copy_to_user_memcpy(void __user *to, const void *from, unsigned long n)
}
/* the mmap semaphore is taken only if not in an atomic context */
- atomic = in_atomic();
+ atomic = faulthandler_disabled();
if (!atomic)
down_read(&current->mm->mmap_sem);