Commit be15a165 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman
Browse files

powerpc/uaccess: Remove __unsafe_put_user_goto()



__unsafe_put_user_goto() is just an intermediate layer to
__put_user_size_goto() without added value other than doing
the __user pointer type checking.

Do the __user pointer type checking in __put_user_size_goto()
and remove __unsafe_put_user_goto().

Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/b6552149209aebd887a6977272b06a41256bdb9f.1615398265.git.christophe.leroy@csgroup.eu
parent ed0d9c66
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -130,23 +130,17 @@ __pu_failed: \

#define __put_user_size_goto(x, ptr, size, label)		\
do {								\
	__typeof__(*(ptr)) __user *__pus_addr = (ptr);		\
								\
	switch (size) {						\
	case 1: __put_user_asm_goto(x, ptr, label, "stb"); break;	\
	case 2: __put_user_asm_goto(x, ptr, label, "sth"); break;	\
	case 4: __put_user_asm_goto(x, ptr, label, "stw"); break;	\
	case 8: __put_user_asm2_goto(x, ptr, label); break;	\
	case 1: __put_user_asm_goto(x, __pus_addr, label, "stb"); break;	\
	case 2: __put_user_asm_goto(x, __pus_addr, label, "sth"); break;	\
	case 4: __put_user_asm_goto(x, __pus_addr, label, "stw"); break;	\
	case 8: __put_user_asm2_goto(x, __pus_addr, label); break;		\
	default: __put_user_bad();				\
	}							\
} while (0)

#define __unsafe_put_user_goto(x, ptr, size, label)		\
do {								\
	__typeof__(*(ptr)) __user *__pu_addr = (ptr);		\
	__chk_user_ptr(ptr);					\
	__put_user_size_goto((x), __pu_addr, (size), label);	\
} while (0)


extern long __get_user_bad(void);

/*
@@ -404,7 +398,7 @@ user_write_access_begin(const void __user *ptr, size_t len)
} while (0)

#define unsafe_put_user(x, p, e) \
	__unsafe_put_user_goto((__typeof__(*(p)))(x), (p), sizeof(*(p)), e)
	__put_user_size_goto((__typeof__(*(p)))(x), (p), sizeof(*(p)), e)

#define unsafe_copy_from_user(d, s, l, e) \
do {											\