7
7
#include <linux/uaccess.h>
8
8
#include <asm/tlb.h>
9
9
10
- bool __weak copy_from_kernel_nofault_allowed (const void * unsafe_src ,
11
- size_t size )
10
+ bool __weak copy_kernel_nofault_allowed (const void * unsafe_src , size_t size )
12
11
{
13
12
return true;
14
13
}
@@ -28,7 +27,7 @@ long copy_from_kernel_nofault(void *dst, const void *src, size_t size)
28
27
if (!IS_ENABLED (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ))
29
28
align = (unsigned long )dst | (unsigned long )src ;
30
29
31
- if (!copy_from_kernel_nofault_allowed (src , size ))
30
+ if (!copy_kernel_nofault_allowed (src , size ))
32
31
return - ERANGE ;
33
32
34
33
pagefault_disable ();
@@ -62,6 +61,9 @@ long copy_to_kernel_nofault(void *dst, const void *src, size_t size)
62
61
if (!IS_ENABLED (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS ))
63
62
align = (unsigned long )dst | (unsigned long )src ;
64
63
64
+ if (!copy_kernel_nofault_allowed (dst , size ))
65
+ return - ERANGE ;
66
+
65
67
pagefault_disable ();
66
68
if (!(align & 7 ))
67
69
copy_to_kernel_nofault_loop (dst , src , size , u64 , Efault );
@@ -83,7 +85,7 @@ long strncpy_from_kernel_nofault(char *dst, const void *unsafe_addr, long count)
83
85
84
86
if (unlikely (count <= 0 ))
85
87
return 0 ;
86
- if (!copy_from_kernel_nofault_allowed (unsafe_addr , count ))
88
+ if (!copy_kernel_nofault_allowed (unsafe_addr , count ))
87
89
return - ERANGE ;
88
90
89
91
pagefault_disable ();
0 commit comments