|
@@ -812,21 +812,21 @@ copy_to_user(void __user *to, const void *from, unsigned long n)
|
|
|
#define user_access_begin() __uaccess_begin()
|
|
|
#define user_access_end() __uaccess_end()
|
|
|
|
|
|
-#define unsafe_put_user(x, ptr) \
|
|
|
-({ \
|
|
|
+#define unsafe_put_user(x, ptr, err_label) \
|
|
|
+do { \
|
|
|
int __pu_err; \
|
|
|
__put_user_size((x), (ptr), sizeof(*(ptr)), __pu_err, -EFAULT); \
|
|
|
- __builtin_expect(__pu_err, 0); \
|
|
|
-})
|
|
|
+ if (unlikely(__pu_err)) goto err_label; \
|
|
|
+} while (0)
|
|
|
|
|
|
-#define unsafe_get_user(x, ptr) \
|
|
|
-({ \
|
|
|
+#define unsafe_get_user(x, ptr, err_label) \
|
|
|
+do { \
|
|
|
int __gu_err; \
|
|
|
unsigned long __gu_val; \
|
|
|
__get_user_size(__gu_val, (ptr), sizeof(*(ptr)), __gu_err, -EFAULT); \
|
|
|
(x) = (__force __typeof__(*(ptr)))__gu_val; \
|
|
|
- __builtin_expect(__gu_err, 0); \
|
|
|
-})
|
|
|
+ if (unlikely(__gu_err)) goto err_label; \
|
|
|
+} while (0)
|
|
|
|
|
|
#endif /* _ASM_X86_UACCESS_H */
|
|
|
|