MIPS: Fix erroneous JR emulation for MIPS R6
Commit5f9f41c474
("MIPS: kernel: Prepare the JR instruction for emulation on MIPS R6") added support for emulating the JR instruction on MIPS R6 cores but that introduced a bug which could be triggered when hitting a JALR opcode because the code used the wrong field in the 'r_format' struct to determine the instruction opcode. This lead to crashes because an emulated JALR instruction was treated as a JR one when the R6 emulator was turned off. Fixes:5f9f41c474
("MIPS: kernel: Prepare the JR instruction for emulation on MIPS R6") Cc: <stable@vger.kernel.org> # 4.0+ Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Cc: linux-mips@linux-mips.org Cc: stable@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/10583/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
e9d92d2233
commit
143fefc8f3
1 changed files with 1 additions and 1 deletions
|
@ -451,7 +451,7 @@ static int isBranchInstr(struct pt_regs *regs, struct mm_decoded_insn dec_insn,
|
|||
/* Fall through */
|
||||
case jr_op:
|
||||
/* For R6, JR already emulated in jalr_op */
|
||||
if (NO_R6EMU && insn.r_format.opcode == jr_op)
|
||||
if (NO_R6EMU && insn.r_format.func == jr_op)
|
||||
break;
|
||||
*contpc = regs->regs[insn.r_format.rs];
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue