Commit f5e6634e authored by Al Viro's avatar Al Viro
Browse files

put the remnants of ..._user_ret() to rest



they hadn't been used in last 15 years...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent bb646cdb
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -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)
{
+0 −4
Original line number Diff line number Diff line
@@ -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.
 */
+0 −15
Original line number Diff line number Diff line
@@ -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))

+0 −65
Original line number Diff line number Diff line
@@ -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);
+0 −40
Original line number Diff line number Diff line
@@ -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,