x86: get rid of 'errret' argument to __get_user_xyz() macross
Every remaining user just has the error case returning -EFAULT.
In fact, the exception was __get_user_asm_nozero(), which was removed in
commit 4b842e4e25
("x86: get rid of small constant size cases in
raw_copy_{to,from}_user()"), and the other __get_user_xyz() macros just
followed suit for consistency.
Fix up some macro whitespace while at it.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ab33eb494c
commit
1a323ea535
|
@ -279,13 +279,13 @@ do { \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
#define __get_user_asm_u64(x, ptr, retval, errret) \
|
#define __get_user_asm_u64(x, ptr, retval) \
|
||||||
({ \
|
({ \
|
||||||
__typeof__(ptr) __ptr = (ptr); \
|
__typeof__(ptr) __ptr = (ptr); \
|
||||||
asm volatile("\n" \
|
asm volatile("\n" \
|
||||||
"1: movl %2,%%eax\n" \
|
"1: movl %2,%%eax\n" \
|
||||||
"2: movl %3,%%edx\n" \
|
"2: movl %3,%%edx\n" \
|
||||||
"3:\n" \
|
"3:\n" \
|
||||||
".section .fixup,\"ax\"\n" \
|
".section .fixup,\"ax\"\n" \
|
||||||
"4: mov %4,%0\n" \
|
"4: mov %4,%0\n" \
|
||||||
" xorl %%eax,%%eax\n" \
|
" xorl %%eax,%%eax\n" \
|
||||||
|
@ -296,37 +296,37 @@ do { \
|
||||||
_ASM_EXTABLE_UA(2b, 4b) \
|
_ASM_EXTABLE_UA(2b, 4b) \
|
||||||
: "=r" (retval), "=&A"(x) \
|
: "=r" (retval), "=&A"(x) \
|
||||||
: "m" (__m(__ptr)), "m" __m(((u32 __user *)(__ptr)) + 1), \
|
: "m" (__m(__ptr)), "m" __m(((u32 __user *)(__ptr)) + 1), \
|
||||||
"i" (errret), "0" (retval)); \
|
"i" (-EFAULT), "0" (retval)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define __get_user_asm_u64(x, ptr, retval, errret) \
|
#define __get_user_asm_u64(x, ptr, retval) \
|
||||||
__get_user_asm(x, ptr, retval, "q", "", "=r", errret)
|
__get_user_asm(x, ptr, retval, "q", "", "=r")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __get_user_size(x, ptr, size, retval, errret) \
|
#define __get_user_size(x, ptr, size, retval) \
|
||||||
do { \
|
do { \
|
||||||
retval = 0; \
|
retval = 0; \
|
||||||
__chk_user_ptr(ptr); \
|
__chk_user_ptr(ptr); \
|
||||||
switch (size) { \
|
switch (size) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
__get_user_asm(x, ptr, retval, "b", "b", "=q", errret); \
|
__get_user_asm(x, ptr, retval, "b", "b", "=q"); \
|
||||||
break; \
|
break; \
|
||||||
case 2: \
|
case 2: \
|
||||||
__get_user_asm(x, ptr, retval, "w", "w", "=r", errret); \
|
__get_user_asm(x, ptr, retval, "w", "w", "=r"); \
|
||||||
break; \
|
break; \
|
||||||
case 4: \
|
case 4: \
|
||||||
__get_user_asm(x, ptr, retval, "l", "k", "=r", errret); \
|
__get_user_asm(x, ptr, retval, "l", "k", "=r"); \
|
||||||
break; \
|
break; \
|
||||||
case 8: \
|
case 8: \
|
||||||
__get_user_asm_u64(x, ptr, retval, errret); \
|
__get_user_asm_u64(x, ptr, retval); \
|
||||||
break; \
|
break; \
|
||||||
default: \
|
default: \
|
||||||
(x) = __get_user_bad(); \
|
(x) = __get_user_bad(); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \
|
#define __get_user_asm(x, addr, err, itype, rtype, ltype) \
|
||||||
asm volatile("\n" \
|
asm volatile("\n" \
|
||||||
"1: mov"itype" %2,%"rtype"1\n" \
|
"1: mov"itype" %2,%"rtype"1\n" \
|
||||||
"2:\n" \
|
"2:\n" \
|
||||||
|
@ -337,7 +337,7 @@ do { \
|
||||||
".previous\n" \
|
".previous\n" \
|
||||||
_ASM_EXTABLE_UA(1b, 3b) \
|
_ASM_EXTABLE_UA(1b, 3b) \
|
||||||
: "=r" (err), ltype(x) \
|
: "=r" (err), ltype(x) \
|
||||||
: "m" (__m(addr)), "i" (errret), "0" (err))
|
: "m" (__m(addr)), "i" (-EFAULT), "0" (err))
|
||||||
|
|
||||||
#define __put_user_nocheck(x, ptr, size) \
|
#define __put_user_nocheck(x, ptr, size) \
|
||||||
({ \
|
({ \
|
||||||
|
@ -361,7 +361,7 @@ __pu_label: \
|
||||||
__typeof__(ptr) __gu_ptr = (ptr); \
|
__typeof__(ptr) __gu_ptr = (ptr); \
|
||||||
__typeof__(size) __gu_size = (size); \
|
__typeof__(size) __gu_size = (size); \
|
||||||
__uaccess_begin_nospec(); \
|
__uaccess_begin_nospec(); \
|
||||||
__get_user_size(__gu_val, __gu_ptr, __gu_size, __gu_err, -EFAULT); \
|
__get_user_size(__gu_val, __gu_ptr, __gu_size, __gu_err); \
|
||||||
__uaccess_end(); \
|
__uaccess_end(); \
|
||||||
(x) = (__force __typeof__(*(ptr)))__gu_val; \
|
(x) = (__force __typeof__(*(ptr)))__gu_val; \
|
||||||
__builtin_expect(__gu_err, 0); \
|
__builtin_expect(__gu_err, 0); \
|
||||||
|
@ -485,7 +485,7 @@ static __must_check __always_inline bool user_access_begin(const void __user *pt
|
||||||
do { \
|
do { \
|
||||||
int __gu_err; \
|
int __gu_err; \
|
||||||
__inttype(*(ptr)) __gu_val; \
|
__inttype(*(ptr)) __gu_val; \
|
||||||
__get_user_size(__gu_val, (ptr), sizeof(*(ptr)), __gu_err, -EFAULT); \
|
__get_user_size(__gu_val, (ptr), sizeof(*(ptr)), __gu_err); \
|
||||||
(x) = (__force __typeof__(*(ptr)))__gu_val; \
|
(x) = (__force __typeof__(*(ptr)))__gu_val; \
|
||||||
if (unlikely(__gu_err)) goto err_label; \
|
if (unlikely(__gu_err)) goto err_label; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
Loading…
Reference in New Issue