Patch "MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mips-r2-on-r6-multu-maddu-msubu-emulation-bugfix.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
d65e5677ad5b3a49c43f60ec07644dc1f87bbd2eMon Sep 17 00:00:00 2001
From: Leonid Yegoshin <[email protected]>
Date: Thu, 25 Aug 2016 10:37:38 -0700
Subject: MIPS: R2-on-R6 MULTU/MADDU/MSUBU emulation bugfix
From: Leonid Yegoshin <[email protected]>
commit d65e5677ad5b3a49c43f60ec07644dc1f87bbd2e upstream.
MIPS instructions MULTU, MADDU and MSUBU emulation requires registers HI/LO to be converted to signed 32bits before 64bit sign extension on MIPS64.
Bug was found on running MIPS32 R2 test application on MIPS64 R6 kernel.
Patchwork: https://patchwork.linux-mips.org/patch/14043/
--- arch/mips/kernel/mips-r2-to-r6-emul.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
arch/mips/kernel/mips-r2-to-r6-emul.c +6 -6
@@ -434,8 +434,8 @@ static int multu_func(struct pt_regs *re rs = regs->regs[MIPSInst_RS (ir)]; res = (u64 )rt * (u64 )rs; rt = res; - regs->lo = (s64 )rt; - regs->hi = (s64)(res >>32 ); + regs->lo = (s64 )(s32 )rt; + regs->hi = (s64)(s32)(res >>32 );MIPS_R2_STATS (muls);
@@ -671,9 +671,9 @@ static int maddu_func(struct pt_regs *re res += ((((s64 )rt) <<32 ) | (u32 )rs); rt = res; - regs->lo = (s64 )rt; + regs->lo = (s64 )(s32 )rt; rs = res >>32 ; - regs->hi = (s64 )rs; + regs->hi = (s64 )(s32 )rs;MIPS_R2_STATS (dsps);
@@ -729,9 +729,9 @@ static int msubu_func(struct pt_regs *re res = ((((s64 )rt) <<32 ) | (u32 )rs) - res; rt = res; - regs->lo = (s64 )rt; + regs->lo = (s64 )(s32 )rt; rs = res >>32 ; - regs->hi = (s64 )rs; + regs->hi = (s64 )(s32 )rs;MIPS_R2_STATS (dsps);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/mips-r2-on-r6-multu-maddu-msubu-emulation-bugfix.patch