From 61c7d284d04be83a26e9d7b782ddd6959ee3800c Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Thu, 11 Sep 2008 20:53:21 +0200 Subject: [PATCH] --- yaml --- r: 123167 b: refs/heads/master c: 1d18ef489509314506328b9e464dd47c24c1d68f h: refs/heads/master i: 123165: 7fff11e0378a4b8f33b88a120af3b5d9d0b0c819 123163: 270b438202facff5569f425b66ff9d69cebddf70 123159: f2b517836403f9c8067426a4b29f90c3d5da2d1a 123151: 302e5a950de13d6a5fca1a9834aa8dc6cef2d017 123135: a9f254880cc6403718658aa77be6262abf593b3f v: v3 --- [refs] | 2 +- trunk/arch/x86/lib/usercopy_32.c | 1 + trunk/include/asm-x86/uaccess.h | 2 -- trunk/include/linux/uaccess.h | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 199adb5ba05c..c4a7aca11963 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3ee1afa308f2a38e5d1e2ad3752ad7abcf480da1 +refs/heads/master: 1d18ef489509314506328b9e464dd47c24c1d68f diff --git a/trunk/arch/x86/lib/usercopy_32.c b/trunk/arch/x86/lib/usercopy_32.c index 7393152a252e..fab5faba1d3e 100644 --- a/trunk/arch/x86/lib/usercopy_32.c +++ b/trunk/arch/x86/lib/usercopy_32.c @@ -148,6 +148,7 @@ do { \ unsigned long clear_user(void __user *to, unsigned long n) { + might_fault(); if (access_ok(VERIFY_WRITE, to, n)) __do_clear_user(to, n); return n; diff --git a/trunk/include/asm-x86/uaccess.h b/trunk/include/asm-x86/uaccess.h index 39f8420c75d9..dc8edb5c4659 100644 --- a/trunk/include/asm-x86/uaccess.h +++ b/trunk/include/asm-x86/uaccess.h @@ -267,7 +267,6 @@ extern void __put_user_8(void); #define __put_user_size(x, ptr, size, retval, errret) \ do { \ retval = 0; \ - might_fault(); \ __chk_user_ptr(ptr); \ switch (size) { \ case 1: \ @@ -320,7 +319,6 @@ do { \ #define __get_user_size(x, ptr, size, retval, errret) \ do { \ retval = 0; \ - might_fault(); \ __chk_user_ptr(ptr); \ switch (size) { \ case 1: \ diff --git a/trunk/include/linux/uaccess.h b/trunk/include/linux/uaccess.h index fec6decfb983..2062293e57e6 100644 --- a/trunk/include/linux/uaccess.h +++ b/trunk/include/linux/uaccess.h @@ -78,7 +78,7 @@ static inline unsigned long __copy_from_user_nocache(void *to, \ set_fs(KERNEL_DS); \ pagefault_disable(); \ - ret = __get_user(retval, (__force typeof(retval) __user *)(addr)); \ + ret = __copy_from_user_inatomic((__force typeof(retval) __user *)(addr), &(retval), sizeof(retval)); \ pagefault_enable(); \ set_fs(old_fs); \ ret; \