Commit 5458989a authored by Christophe Leroy's avatar Christophe Leroy Committed by Madhavan Srinivasan
Browse files

powerpc/uaccess: Remove {allow/prevent}_{read/write/read_write}_{from/to/}_user()



The six following functions have become simple single-line fonctions
that do not have much added value anymore:
- allow_read_from_user()
- allow_write_to_user()
- allow_read_write_user()
- prevent_read_from_user()
- prevent_write_to_user()
- prevent_read_write_user()

Directly call allow_user_access() and prevent_user_access(), it doesn't
reduce the readability and it removes unnecessary middle functions.

Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/70971f0ba81eab742a120e5bfdeff6b42d08fd98.1766574657.git.chleroy@kernel.org
parent e3efbfbf
Loading
Loading
Loading
Loading
+0 −47
Original line number Diff line number Diff line
@@ -131,53 +131,6 @@ static __always_inline void kuap_assert_locked(void)
		kuap_get_and_assert_locked();
}

static __always_inline void allow_read_from_user(const void __user *from, unsigned long size)
{
	allow_user_access(NULL, KUAP_READ);
}

static __always_inline void allow_write_to_user(void __user *to, unsigned long size)
{
	allow_user_access(to, KUAP_WRITE);
}

static __always_inline void allow_read_write_user(void __user *to, const void __user *from,
						  unsigned long size)
{
	allow_user_access(to, KUAP_READ_WRITE);
}

static __always_inline void prevent_read_from_user(const void __user *from, unsigned long size)
{
	prevent_user_access(KUAP_READ);
}

static __always_inline void prevent_write_to_user(void __user *to, unsigned long size)
{
	prevent_user_access(KUAP_WRITE);
}

static __always_inline void prevent_read_write_user(void __user *to, const void __user *from,
						    unsigned long size)
{
	prevent_user_access(KUAP_READ_WRITE);
}

static __always_inline void prevent_current_access_user(void)
{
	prevent_user_access(KUAP_READ_WRITE);
}

static __always_inline void prevent_current_read_from_user(void)
{
	prevent_user_access(KUAP_READ);
}

static __always_inline void prevent_current_write_to_user(void)
{
	prevent_user_access(KUAP_WRITE);
}

#endif /* !__ASSEMBLER__ */

#endif /* _ASM_POWERPC_KUAP_H_ */
+15 −15
Original line number Diff line number Diff line
@@ -45,14 +45,14 @@
	do {							\
		__label__ __pu_failed;				\
								\
		allow_write_to_user(__pu_addr, __pu_size);	\
		allow_user_access(__pu_addr, KUAP_WRITE);	\
		__put_user_size_goto(__pu_val, __pu_addr, __pu_size, __pu_failed);	\
		prevent_write_to_user(__pu_addr, __pu_size);	\
		prevent_user_access(KUAP_WRITE);		\
		__pu_err = 0;					\
		break;						\
								\
__pu_failed:							\
		prevent_write_to_user(__pu_addr, __pu_size);	\
		prevent_user_access(KUAP_WRITE);		\
		__pu_err = -EFAULT;				\
	} while (0);						\
								\
@@ -302,9 +302,9 @@ do { \
								\
	might_fault();					\
	barrier_nospec();					\
	allow_read_from_user(__gu_addr, __gu_size);		\
	allow_user_access(NULL, KUAP_READ);		\
	__get_user_size_allowed(__gu_val, __gu_addr, __gu_size, __gu_err);	\
	prevent_read_from_user(__gu_addr, __gu_size);		\
	prevent_user_access(KUAP_READ);				\
	(x) = (__typeof__(*(ptr)))__gu_val;			\
								\
	__gu_err;						\
@@ -331,9 +331,9 @@ raw_copy_in_user(void __user *to, const void __user *from, unsigned long n)
	unsigned long ret;

	barrier_nospec();
	allow_read_write_user(to, from, n);
	allow_user_access(to, KUAP_READ_WRITE);
	ret = __copy_tofrom_user(to, from, n);
	prevent_read_write_user(to, from, n);
	prevent_user_access(KUAP_READ_WRITE);
	return ret;
}
#endif /* __powerpc64__ */
@@ -343,9 +343,9 @@ static inline unsigned long raw_copy_from_user(void *to,
{
	unsigned long ret;

	allow_read_from_user(from, n);
	allow_user_access(NULL, KUAP_READ);
	ret = __copy_tofrom_user((__force void __user *)to, from, n);
	prevent_read_from_user(from, n);
	prevent_user_access(KUAP_READ);
	return ret;
}

@@ -354,9 +354,9 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
{
	unsigned long ret;

	allow_write_to_user(to, n);
	allow_user_access(to, KUAP_WRITE);
	ret = __copy_tofrom_user(to, (__force const void __user *)from, n);
	prevent_write_to_user(to, n);
	prevent_user_access(KUAP_WRITE);
	return ret;
}

@@ -367,9 +367,9 @@ static inline unsigned long __clear_user(void __user *addr, unsigned long size)
	unsigned long ret;

	might_fault();
	allow_write_to_user(addr, size);
	allow_user_access(addr, KUAP_WRITE);
	ret = __arch_clear_user(addr, size);
	prevent_write_to_user(addr, size);
	prevent_user_access(KUAP_WRITE);
	return ret;
}

@@ -397,9 +397,9 @@ copy_mc_to_user(void __user *to, const void *from, unsigned long n)
{
	if (check_copy_size(from, n, true)) {
		if (access_ok(to, n)) {
			allow_write_to_user(to, n);
			allow_user_access(to, KUAP_WRITE);
			n = copy_mc_generic((void __force *)to, from, n);
			prevent_write_to_user(to, n);
			prevent_user_access(KUAP_WRITE);
		}
	}