diff options
Diffstat (limited to 'arch/x86/lib/usercopy_64.c')
-rw-r--r-- | arch/x86/lib/usercopy_64.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/arch/x86/lib/usercopy_64.c b/arch/x86/lib/usercopy_64.c index 847d12945998..64d6c84e6353 100644 --- a/arch/x86/lib/usercopy_64.c +++ b/arch/x86/lib/usercopy_64.c | |||
@@ -15,9 +15,7 @@ | |||
15 | #define __do_strncpy_from_user(dst,src,count,res) \ | 15 | #define __do_strncpy_from_user(dst,src,count,res) \ |
16 | do { \ | 16 | do { \ |
17 | long __d0, __d1, __d2; \ | 17 | long __d0, __d1, __d2; \ |
18 | might_sleep(); \ | 18 | might_fault(); \ |
19 | if (current->mm) \ | ||
20 | might_lock_read(¤t->mm->mmap_sem); \ | ||
21 | __asm__ __volatile__( \ | 19 | __asm__ __volatile__( \ |
22 | " testq %1,%1\n" \ | 20 | " testq %1,%1\n" \ |
23 | " jz 2f\n" \ | 21 | " jz 2f\n" \ |
@@ -66,9 +64,7 @@ EXPORT_SYMBOL(strncpy_from_user); | |||
66 | unsigned long __clear_user(void __user *addr, unsigned long size) | 64 | unsigned long __clear_user(void __user *addr, unsigned long size) |
67 | { | 65 | { |
68 | long __d0; | 66 | long __d0; |
69 | might_sleep(); | 67 | might_fault(); |
70 | if (current->mm) | ||
71 | might_lock_read(¤t->mm->mmap_sem); | ||
72 | /* no memory constraint because it doesn't change any memory gcc knows | 68 | /* no memory constraint because it doesn't change any memory gcc knows |
73 | about */ | 69 | about */ |
74 | asm volatile( | 70 | asm volatile( |