forked from Minki/linux
put the remnants of ..._user_ret() to rest
they hadn't been used in last 15 years... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
bb646cdb12
commit
f5e6634ec0
@ -168,12 +168,6 @@ static inline int bad_user_access_length(void)
|
||||
#define __copy_to_user_inatomic __copy_to_user
|
||||
#define __copy_from_user_inatomic __copy_from_user
|
||||
|
||||
#define copy_to_user_ret(to, from, n, retval) ({ if (copy_to_user(to, from, n))\
|
||||
return retval; })
|
||||
|
||||
#define copy_from_user_ret(to, from, n, retval) ({ if (copy_from_user(to, from, n))\
|
||||
return retval; })
|
||||
|
||||
static inline unsigned long __must_check
|
||||
copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
{
|
||||
|
@ -135,10 +135,6 @@ extern int __get_user_bad(void);
|
||||
#define __copy_to_user_inatomic __copy_to_user
|
||||
#define __copy_from_user_inatomic __copy_from_user
|
||||
|
||||
#define copy_to_user_ret(to,from,n,retval) ({ if (copy_to_user(to,from,n)) return retval; })
|
||||
|
||||
#define copy_from_user_ret(to,from,n,retval) ({ if (copy_from_user(to,from,n)) return retval; })
|
||||
|
||||
/*
|
||||
* Copy a null terminated string from userspace.
|
||||
*/
|
||||
|
@ -110,21 +110,6 @@ extern int fixup_exception(struct pt_regs *regs);
|
||||
#define __put_user(x, ptr) __put_user_nocheck((x), (ptr), sizeof(*(ptr)))
|
||||
#define __get_user(x, ptr) __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
|
||||
|
||||
/*
|
||||
* The "xxx_ret" versions return constant specified in third argument, if
|
||||
* something bad happens. These macros can be optimized for the
|
||||
* case of just returning from the function xxx_ret is used.
|
||||
*/
|
||||
|
||||
#define put_user_ret(x, ptr, ret) \
|
||||
({ if (put_user((x), (ptr))) return (ret); })
|
||||
#define get_user_ret(x, ptr, ret) \
|
||||
({ if (get_user((x), (ptr))) return (ret); })
|
||||
#define __put_user_ret(x, ptr, ret) \
|
||||
({ if (__put_user((x), (ptr))) return (ret); })
|
||||
#define __get_user_ret(x, ptr, ret) \
|
||||
({ if (__get_user((x), (ptr))) return (ret); })
|
||||
|
||||
struct __large_struct { unsigned long buf[100]; };
|
||||
#define __m(x) (*(struct __large_struct *)(x))
|
||||
|
||||
|
@ -205,31 +205,6 @@ int __put_user_bad(void);
|
||||
__gu_ret; \
|
||||
})
|
||||
|
||||
#define __get_user_check_ret(x, addr, size, type, retval) ({ \
|
||||
register unsigned long __gu_val __asm__ ("l1"); \
|
||||
if (__access_ok(addr, size)) { \
|
||||
switch (size) { \
|
||||
case 1: \
|
||||
__get_user_asm_ret(__gu_val, ub, addr, retval); \
|
||||
break; \
|
||||
case 2: \
|
||||
__get_user_asm_ret(__gu_val, uh, addr, retval); \
|
||||
break; \
|
||||
case 4: \
|
||||
__get_user_asm_ret(__gu_val, , addr, retval); \
|
||||
break; \
|
||||
case 8: \
|
||||
__get_user_asm_ret(__gu_val, d, addr, retval); \
|
||||
break; \
|
||||
default: \
|
||||
if (__get_user_bad()) \
|
||||
return retval; \
|
||||
} \
|
||||
x = (__force type) __gu_val; \
|
||||
} else \
|
||||
return retval; \
|
||||
})
|
||||
|
||||
#define __get_user_nocheck(x, addr, size, type) ({ \
|
||||
register int __gu_ret; \
|
||||
register unsigned long __gu_val; \
|
||||
@ -247,20 +222,6 @@ int __put_user_bad(void);
|
||||
__gu_ret; \
|
||||
})
|
||||
|
||||
#define __get_user_nocheck_ret(x, addr, size, type, retval) ({ \
|
||||
register unsigned long __gu_val __asm__ ("l1"); \
|
||||
switch (size) { \
|
||||
case 1: __get_user_asm_ret(__gu_val, ub, addr, retval); break; \
|
||||
case 2: __get_user_asm_ret(__gu_val, uh, addr, retval); break; \
|
||||
case 4: __get_user_asm_ret(__gu_val, , addr, retval); break; \
|
||||
case 8: __get_user_asm_ret(__gu_val, d, addr, retval); break; \
|
||||
default: \
|
||||
if (__get_user_bad()) \
|
||||
return retval; \
|
||||
} \
|
||||
x = (__force type) __gu_val; \
|
||||
})
|
||||
|
||||
#define __get_user_asm(x, size, addr, ret) \
|
||||
__asm__ __volatile__( \
|
||||
"/* Get user asm, inline. */\n" \
|
||||
@ -281,32 +242,6 @@ __asm__ __volatile__( \
|
||||
: "=&r" (ret), "=&r" (x) : "m" (*__m(addr)), \
|
||||
"i" (-EFAULT))
|
||||
|
||||
#define __get_user_asm_ret(x, size, addr, retval) \
|
||||
if (__builtin_constant_p(retval) && retval == -EFAULT) \
|
||||
__asm__ __volatile__( \
|
||||
"/* Get user asm ret, inline. */\n" \
|
||||
"1:\t" "ld"#size " %1, %0\n\n\t" \
|
||||
".section __ex_table,#alloc\n\t" \
|
||||
".align 4\n\t" \
|
||||
".word 1b,__ret_efault\n\n\t" \
|
||||
".previous\n\t" \
|
||||
: "=&r" (x) : "m" (*__m(addr))); \
|
||||
else \
|
||||
__asm__ __volatile__( \
|
||||
"/* Get user asm ret, inline. */\n" \
|
||||
"1:\t" "ld"#size " %1, %0\n\n\t" \
|
||||
".section .fixup,#alloc,#execinstr\n\t" \
|
||||
".align 4\n" \
|
||||
"3:\n\t" \
|
||||
"ret\n\t" \
|
||||
" restore %%g0, %2, %%o0\n\n\t" \
|
||||
".previous\n\t" \
|
||||
".section __ex_table,#alloc\n\t" \
|
||||
".align 4\n\t" \
|
||||
".word 1b, 3b\n\n\t" \
|
||||
".previous\n\t" \
|
||||
: "=&r" (x) : "m" (*__m(addr)), "i" (retval))
|
||||
|
||||
int __get_user_bad(void);
|
||||
|
||||
unsigned long __copy_user(void __user *to, const void __user *from, unsigned long size);
|
||||
|
@ -179,20 +179,6 @@ int __put_user_bad(void);
|
||||
__gu_ret; \
|
||||
})
|
||||
|
||||
#define __get_user_nocheck_ret(data, addr, size, type, retval) ({ \
|
||||
register unsigned long __gu_val __asm__ ("l1"); \
|
||||
switch (size) { \
|
||||
case 1: __get_user_asm_ret(__gu_val, ub, addr, retval); break; \
|
||||
case 2: __get_user_asm_ret(__gu_val, uh, addr, retval); break; \
|
||||
case 4: __get_user_asm_ret(__gu_val, uw, addr, retval); break; \
|
||||
case 8: __get_user_asm_ret(__gu_val, x, addr, retval); break; \
|
||||
default: \
|
||||
if (__get_user_bad()) \
|
||||
return retval; \
|
||||
} \
|
||||
data = (__force type) __gu_val; \
|
||||
})
|
||||
|
||||
#define __get_user_asm(x, size, addr, ret) \
|
||||
__asm__ __volatile__( \
|
||||
"/* Get user asm, inline. */\n" \
|
||||
@ -214,32 +200,6 @@ __asm__ __volatile__( \
|
||||
: "=r" (ret), "=r" (x) : "r" (__m(addr)), \
|
||||
"i" (-EFAULT))
|
||||
|
||||
#define __get_user_asm_ret(x, size, addr, retval) \
|
||||
if (__builtin_constant_p(retval) && retval == -EFAULT) \
|
||||
__asm__ __volatile__( \
|
||||
"/* Get user asm ret, inline. */\n" \
|
||||
"1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \
|
||||
".section __ex_table,\"a\"\n\t" \
|
||||
".align 4\n\t" \
|
||||
".word 1b,__ret_efault\n\n\t" \
|
||||
".previous\n\t" \
|
||||
: "=r" (x) : "r" (__m(addr))); \
|
||||
else \
|
||||
__asm__ __volatile__( \
|
||||
"/* Get user asm ret, inline. */\n" \
|
||||
"1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \
|
||||
".section .fixup,#alloc,#execinstr\n\t" \
|
||||
".align 4\n" \
|
||||
"3:\n\t" \
|
||||
"ret\n\t" \
|
||||
" restore %%g0, %2, %%o0\n\n\t" \
|
||||
".previous\n\t" \
|
||||
".section __ex_table,\"a\"\n\t" \
|
||||
".align 4\n\t" \
|
||||
".word 1b, 3b\n\n\t" \
|
||||
".previous\n\t" \
|
||||
: "=r" (x) : "r" (__m(addr)), "i" (retval))
|
||||
|
||||
int __get_user_bad(void);
|
||||
|
||||
unsigned long __must_check ___copy_from_user(void *to,
|
||||
|
Loading…
Reference in New Issue
Block a user