@@ -160,6 +160,36 @@ static __always_inline int __put_user_fn(void *x, void __user *ptr, unsigned lon
160
160
return rc ;
161
161
}
162
162
163
+ /*
164
+ * These are the main single-value transfer routines. They automatically
165
+ * use the right size if we just have the right pointer type.
166
+ */
167
+ #define __put_user (x , ptr ) \
168
+ ({ \
169
+ __typeof__(*(ptr)) __x = (x); \
170
+ int __pu_err = -EFAULT; \
171
+ \
172
+ __chk_user_ptr(ptr); \
173
+ switch (sizeof(*(ptr))) { \
174
+ case 1: \
175
+ case 2: \
176
+ case 4: \
177
+ case 8: \
178
+ __pu_err = __put_user_fn(&__x, ptr, sizeof(*(ptr))); \
179
+ break; \
180
+ default: \
181
+ __put_user_bad(); \
182
+ break; \
183
+ } \
184
+ __builtin_expect(__pu_err, 0); \
185
+ })
186
+
187
+ #define put_user (x , ptr ) \
188
+ ({ \
189
+ might_fault(); \
190
+ __put_user(x, ptr); \
191
+ })
192
+
163
193
int __noreturn __get_user_bad (void );
164
194
165
195
#define DEFINE_GET_USER (type ) \
@@ -237,36 +267,6 @@ static __always_inline int __get_user_fn(void *x, const void __user *ptr, unsign
237
267
return rc ;
238
268
}
239
269
240
- /*
241
- * These are the main single-value transfer routines. They automatically
242
- * use the right size if we just have the right pointer type.
243
- */
244
- #define __put_user (x , ptr ) \
245
- ({ \
246
- __typeof__(*(ptr)) __x = (x); \
247
- int __pu_err = -EFAULT; \
248
- \
249
- __chk_user_ptr(ptr); \
250
- switch (sizeof(*(ptr))) { \
251
- case 1: \
252
- case 2: \
253
- case 4: \
254
- case 8: \
255
- __pu_err = __put_user_fn(&__x, ptr, sizeof(*(ptr))); \
256
- break; \
257
- default: \
258
- __put_user_bad(); \
259
- break; \
260
- } \
261
- __builtin_expect(__pu_err, 0); \
262
- })
263
-
264
- #define put_user (x , ptr ) \
265
- ({ \
266
- might_fault(); \
267
- __put_user(x, ptr); \
268
- })
269
-
270
270
#define __get_user (x , ptr ) \
271
271
({ \
272
272
int __gu_err = -EFAULT; \
0 commit comments