Skip to content

Commit b3d7e55

Browse files
mpredfearnamalon
authored andcommitted
MIPS: uaccess: Add micromips clobbers to bzero invocation
The micromips implementation of bzero additionally clobbers registers t7 & t8. Specify this in the clobbers list when invoking bzero. Fixes: 26c5e07 ("MIPS: microMIPS: Optimise 'memset' core library function.") Reported-by: James Hogan <jhogan@kernel.org> Signed-off-by: Matt 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: James Hogan <jhogan@kernel.org>
1 parent c96eebf commit b3d7e55

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

arch/mips/include/asm/uaccess.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,13 @@ __clear_user(void __user *addr, __kernel_size_t size)
654654
{
655655
__kernel_size_t res;
656656

657+
#ifdef CONFIG_CPU_MICROMIPS
658+
/* micromips memset / bzero also clobbers t7 & t8 */
659+
#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$15", "$24", "$31"
660+
#else
661+
#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"
662+
#endif /* CONFIG_CPU_MICROMIPS */
663+
657664
if (eva_kernel_access()) {
658665
__asm__ __volatile__(
659666
"move\t$4, %1\n\t"
@@ -663,7 +670,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
663670
"move\t%0, $6"
664671
: "=r" (res)
665672
: "r" (addr), "r" (size)
666-
: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
673+
: bzero_clobbers);
667674
} else {
668675
might_fault();
669676
__asm__ __volatile__(
@@ -674,7 +681,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
674681
"move\t%0, $6"
675682
: "=r" (res)
676683
: "r" (addr), "r" (size)
677-
: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
684+
: bzero_clobbers);
678685
}
679686

680687
return res;

0 commit comments

Comments
 (0)