Provide arch_kernel_read and arch_kernel_write routines to implement the
maccess routines without messing with set_fs and without stac/clac that
opens up access to user space.

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

diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index d8f283b9a569c..765e18417b3ba 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -523,5 +523,21 @@ do {                                                       
                \
        unsafe_copy_loop(__ucu_dst, __ucu_src, __ucu_len, u8, label);   \
 } while (0)
 
+#define HAVE_ARCH_PROBE_KERNEL
+
+#define arch_kernel_read(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 arch_kernel_write(dst, src, type, err_label)                   \
+       __put_user_size(*((type *)(src)), (__force type __user *)(dst), \
+                       sizeof(type), err_label)
+
 #endif /* _ASM_X86_UACCESS_H */
 
-- 
2.26.2

Reply via email to