s390/uaccess: Move put_user() / __put_user() close to put_user() asm code
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 13 Jan 2025 12:37:01 +0000 (13:37 +0100)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Sun, 26 Jan 2025 16:24:06 +0000 (17:24 +0100)
Keep put_user() and get_user() code separated.

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/include/asm/uaccess.h

index b96bda0f1275613164313369fa0d469e4786b91b..1bd60e365125b19fb3657450ddab8b4d1ac074e5 100644 (file)
@@ -160,6 +160,36 @@ static __always_inline int __put_user_fn(void *x, void __user *ptr, unsigned lon
        return rc;
 }
 
+/*
+ * These are the main single-value transfer routines.  They automatically
+ * use the right size if we just have the right pointer type.
+ */
+#define __put_user(x, ptr)                                             \
+({                                                                     \
+       __typeof__(*(ptr)) __x = (x);                                   \
+       int __pu_err = -EFAULT;                                         \
+                                                                       \
+       __chk_user_ptr(ptr);                                            \
+       switch (sizeof(*(ptr))) {                                       \
+       case 1:                                                         \
+       case 2:                                                         \
+       case 4:                                                         \
+       case 8:                                                         \
+               __pu_err = __put_user_fn(&__x, ptr, sizeof(*(ptr)));    \
+               break;                                                  \
+       default:                                                        \
+               __put_user_bad();                                       \
+               break;                                                  \
+       }                                                               \
+       __builtin_expect(__pu_err, 0);                                  \
+})
+
+#define put_user(x, ptr)                                               \
+({                                                                     \
+       might_fault();                                                  \
+       __put_user(x, ptr);                                             \
+})
+
 int __noreturn __get_user_bad(void);
 
 #define DEFINE_GET_USER(type)                                          \
@@ -237,36 +267,6 @@ static __always_inline int __get_user_fn(void *x, const void __user *ptr, unsign
        return rc;
 }
 
-/*
- * These are the main single-value transfer routines.  They automatically
- * use the right size if we just have the right pointer type.
- */
-#define __put_user(x, ptr)                                             \
-({                                                                     \
-       __typeof__(*(ptr)) __x = (x);                                   \
-       int __pu_err = -EFAULT;                                         \
-                                                                       \
-       __chk_user_ptr(ptr);                                            \
-       switch (sizeof(*(ptr))) {                                       \
-       case 1:                                                         \
-       case 2:                                                         \
-       case 4:                                                         \
-       case 8:                                                         \
-               __pu_err = __put_user_fn(&__x, ptr, sizeof(*(ptr)));    \
-               break;                                                  \
-       default:                                                        \
-               __put_user_bad();                                       \
-               break;                                                  \
-       }                                                               \
-       __builtin_expect(__pu_err, 0);                                  \
-})
-
-#define put_user(x, ptr)                                               \
-({                                                                     \
-       might_fault();                                                  \
-       __put_user(x, ptr);                                             \
-})
-
 #define __get_user(x, ptr)                                             \
 ({                                                                     \
        int __gu_err = -EFAULT;                                         \