diff options
Diffstat (limited to 'mm/maccess.c')
-rw-r--r-- | mm/maccess.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/maccess.c b/mm/maccess.c index ec00be51a24f..f3416632e5a4 100644 --- a/mm/maccess.c +++ b/mm/maccess.c | |||
@@ -30,8 +30,10 @@ long __probe_kernel_read(void *dst, const void *src, size_t size) | |||
30 | 30 | ||
31 | set_fs(KERNEL_DS); | 31 | set_fs(KERNEL_DS); |
32 | pagefault_disable(); | 32 | pagefault_disable(); |
33 | current->kernel_uaccess_faults_ok++; | ||
33 | ret = __copy_from_user_inatomic(dst, | 34 | ret = __copy_from_user_inatomic(dst, |
34 | (__force const void __user *)src, size); | 35 | (__force const void __user *)src, size); |
36 | current->kernel_uaccess_faults_ok--; | ||
35 | pagefault_enable(); | 37 | pagefault_enable(); |
36 | set_fs(old_fs); | 38 | set_fs(old_fs); |
37 | 39 | ||
@@ -58,7 +60,9 @@ long __probe_kernel_write(void *dst, const void *src, size_t size) | |||
58 | 60 | ||
59 | set_fs(KERNEL_DS); | 61 | set_fs(KERNEL_DS); |
60 | pagefault_disable(); | 62 | pagefault_disable(); |
63 | current->kernel_uaccess_faults_ok++; | ||
61 | ret = __copy_to_user_inatomic((__force void __user *)dst, src, size); | 64 | ret = __copy_to_user_inatomic((__force void __user *)dst, src, size); |
65 | current->kernel_uaccess_faults_ok--; | ||
62 | pagefault_enable(); | 66 | pagefault_enable(); |
63 | set_fs(old_fs); | 67 | set_fs(old_fs); |
64 | 68 | ||
@@ -94,11 +98,13 @@ long strncpy_from_unsafe(char *dst, const void *unsafe_addr, long count) | |||
94 | 98 | ||
95 | set_fs(KERNEL_DS); | 99 | set_fs(KERNEL_DS); |
96 | pagefault_disable(); | 100 | pagefault_disable(); |
101 | current->kernel_uaccess_faults_ok++; | ||
97 | 102 | ||
98 | do { | 103 | do { |
99 | ret = __get_user(*dst++, (const char __user __force *)src++); | 104 | ret = __get_user(*dst++, (const char __user __force *)src++); |
100 | } while (dst[-1] && ret == 0 && src - unsafe_addr < count); | 105 | } while (dst[-1] && ret == 0 && src - unsafe_addr < count); |
101 | 106 | ||
107 | current->kernel_uaccess_faults_ok--; | ||
102 | dst[-1] = '\0'; | 108 | dst[-1] = '\0'; |
103 | pagefault_enable(); | 109 | pagefault_enable(); |
104 | set_fs(old_fs); | 110 | set_fs(old_fs); |