[mips,mipsel] Fix branch emulation of branch likely instructions.
svn path=/dists/sid/linux/; revision=21375
This commit is contained in:
parent
5ce668d894
commit
013ec287e6
|
@ -92,6 +92,9 @@ linux (3.14.5-1) UNRELEASED; urgency=medium
|
||||||
* [arm64] Initial kernel configuration and packaging (Closes: #745349).
|
* [arm64] Initial kernel configuration and packaging (Closes: #745349).
|
||||||
* [armhf] Add virtio-modules udeb.
|
* [armhf] Add virtio-modules udeb.
|
||||||
|
|
||||||
|
[ Aurelien Jarno ]
|
||||||
|
* [mips,mipsel] Fix branch emulation of branch likely instructions.
|
||||||
|
|
||||||
-- Ben Hutchings <ben@decadent.org.uk> Wed, 21 May 2014 21:24:50 +0100
|
-- Ben Hutchings <ben@decadent.org.uk> Wed, 21 May 2014 21:24:50 +0100
|
||||||
|
|
||||||
linux (3.14.4-1) unstable; urgency=high
|
linux (3.14.4-1) unstable; urgency=high
|
||||||
|
|
65
debian/patches/bugfix/mips/MIPS-Fix-branch-emulation-of-branch-likely-instructi.patch
vendored
Normal file
65
debian/patches/bugfix/mips/MIPS-Fix-branch-emulation-of-branch-likely-instructi.patch
vendored
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
From: Ralf Baechle <ralf@linux-mips.org>
|
||||||
|
Date: Thu, 22 May 2014 23:19:00 +0200
|
||||||
|
Subject: MIPS: Fix branch emulation of branch likely instructions.
|
||||||
|
Origin: https://git.kernel.org/linus/41ca86e8502952116234fa558f4277092a5aaae9
|
||||||
|
|
||||||
|
Two issues:
|
||||||
|
|
||||||
|
o For beql_op, beql_op, bne_op, bnel_op, blez_op, blezl_op, bgtz_op and
|
||||||
|
bgtzl_op the wrong field was being checked for the instruction opcode.
|
||||||
|
o For blez_op / blezl_op and bgtz_op / bgtzl_op the test was testing
|
||||||
|
for the wrong opcode.
|
||||||
|
|
||||||
|
This bug got introduced by d8d4e3ae0b5c179c0bfd3f0af5b352d13bea9cfa [MIPS
|
||||||
|
Kprobes: Refactor branch emulation].
|
||||||
|
|
||||||
|
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||||||
|
Acked-by: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
|
||||||
|
Acked-by: Victor Kamensky <kamensky@cisco.com>
|
||||||
|
---
|
||||||
|
arch/mips/kernel/branch.c | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c
|
||||||
|
index 4d78bf4..76122ff 100644
|
||||||
|
--- a/arch/mips/kernel/branch.c
|
||||||
|
+++ b/arch/mips/kernel/branch.c
|
||||||
|
@@ -317,7 +317,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||||
|
if (regs->regs[insn.i_format.rs] ==
|
||||||
|
regs->regs[insn.i_format.rt]) {
|
||||||
|
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||||
|
- if (insn.i_format.rt == beql_op)
|
||||||
|
+ if (insn.i_format.opcode == beql_op)
|
||||||
|
ret = BRANCH_LIKELY_TAKEN;
|
||||||
|
} else
|
||||||
|
epc += 8;
|
||||||
|
@@ -329,7 +329,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||||
|
if (regs->regs[insn.i_format.rs] !=
|
||||||
|
regs->regs[insn.i_format.rt]) {
|
||||||
|
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||||
|
- if (insn.i_format.rt == bnel_op)
|
||||||
|
+ if (insn.i_format.opcode == bnel_op)
|
||||||
|
ret = BRANCH_LIKELY_TAKEN;
|
||||||
|
} else
|
||||||
|
epc += 8;
|
||||||
|
@@ -341,7 +341,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||||
|
/* rt field assumed to be zero */
|
||||||
|
if ((long)regs->regs[insn.i_format.rs] <= 0) {
|
||||||
|
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||||
|
- if (insn.i_format.rt == bnel_op)
|
||||||
|
+ if (insn.i_format.opcode == blezl_op)
|
||||||
|
ret = BRANCH_LIKELY_TAKEN;
|
||||||
|
} else
|
||||||
|
epc += 8;
|
||||||
|
@@ -353,7 +353,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||||
|
/* rt field assumed to be zero */
|
||||||
|
if ((long)regs->regs[insn.i_format.rs] > 0) {
|
||||||
|
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||||
|
- if (insn.i_format.rt == bnel_op)
|
||||||
|
+ if (insn.i_format.opcode == bgtzl_op)
|
||||||
|
ret = BRANCH_LIKELY_TAKEN;
|
||||||
|
} else
|
||||||
|
epc += 8;
|
||||||
|
--
|
||||||
|
2.0.0.rc0
|
||||||
|
|
|
@ -88,3 +88,4 @@ debian/net-revert-lockdep-changes-in-3.14.5.patch
|
||||||
debian/sockdiag-avoid-abi-change-in-3.14.5.patch
|
debian/sockdiag-avoid-abi-change-in-3.14.5.patch
|
||||||
debian/target-avoid-abi-change-in-3.14.5.patch
|
debian/target-avoid-abi-change-in-3.14.5.patch
|
||||||
debian/netfilter-avoid-abi-change-in-3.14.5.patch
|
debian/netfilter-avoid-abi-change-in-3.14.5.patch
|
||||||
|
bugfix/mips/MIPS-Fix-branch-emulation-of-branch-likely-instructi.patch
|
||||||
|
|
Loading…
Reference in New Issue