Le 17/08/2020 à 09:32, Christoph Hellwig a écrit :
Provide __get_kernel_nofault and __put_kernel_nofault routines to
implement the maccess routines without messing with set_fs and without
opening up access to user space.

__get_user_size() opens access to user space. You have to use __get_user_size_allowed() when user access is already allowed (or when not needed to allow it).

Christophe


Signed-off-by: Christoph Hellwig <h...@lst.de>
---
  arch/powerpc/include/asm/uaccess.h | 16 ++++++++++++++++
  1 file changed, 16 insertions(+)

diff --git a/arch/powerpc/include/asm/uaccess.h 
b/arch/powerpc/include/asm/uaccess.h
index 00699903f1efca..a31de40ac00b62 100644
--- a/arch/powerpc/include/asm/uaccess.h
+++ b/arch/powerpc/include/asm/uaccess.h
@@ -623,4 +623,20 @@ do {                                                       
                \
                __put_user_goto(*(u8*)(_src + _i), (u8 __user *)(_dst + _i), 
e);\
  } while (0)
+#define HAVE_GET_KERNEL_NOFAULT
+
+#define __get_kernel_nofault(dst, src, type, err_label)                        
\
+do {                                                                   \
+       int __kr_err;                                                   \
+                                                                       \
+       __get_user_size(*((type *)(dst)), (__force type __user *)(src), \
+                       sizeof(type), __kr_err);                        \
+       if (unlikely(__kr_err))                                         \
+               goto err_label;                                         \
+} while (0)
+
+#define __put_kernel_nofault(dst, src, type, err_label)                        
\
+       __put_user_size_goto(*((type *)(src)),                          \
+               (__force type __user *)(dst), sizeof(type), err_label)
+
  #endif        /* _ARCH_POWERPC_UACCESS_H */

Reply via email to