Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11797742 authored by Matt Redfearn's avatar Matt Redfearn Committed by Greg Kroah-Hartman
Browse files

MIPS: uaccess: Add micromips clobbers to bzero invocation



commit b3d7e55c3f886493235bfee08e1e5a4a27cbcce8 upstream.

The micromips implementation of bzero additionally clobbers registers t7
& t8. Specify this in the clobbers list when invoking bzero.

Fixes: 26c5e07d ("MIPS: microMIPS: Optimise 'memset' core library function.")
Reported-by: default avatarJames Hogan <jhogan@kernel.org>
Signed-off-by: default avatarMatt Redfearn <matt.redfearn@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: <stable@vger.kernel.org> # 3.10+
Patchwork: https://patchwork.linux-mips.org/patch/19110/


Signed-off-by: default avatarJames Hogan <jhogan@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d385cc69
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -1257,6 +1257,13 @@ __clear_user(void __user *addr, __kernel_size_t size)
{
	__kernel_size_t res;

#ifdef CONFIG_CPU_MICROMIPS
/* micromips memset / bzero also clobbers t7 & t8 */
#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$15", "$24", "$31"
#else
#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"
#endif /* CONFIG_CPU_MICROMIPS */

	if (eva_kernel_access()) {
		__asm__ __volatile__(
			"move\t$4, %1\n\t"
@@ -1266,7 +1273,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
			"move\t%0, $6"
			: "=r" (res)
			: "r" (addr), "r" (size)
			: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
			: bzero_clobbers);
	} else {
		might_fault();
		__asm__ __volatile__(
@@ -1277,7 +1284,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
			"move\t%0, $6"
			: "=r" (res)
			: "r" (addr), "r" (size)
			: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
			: bzero_clobbers);
	}

	return res;