]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 25 Jul 2017 19:12:54 +0000 (12:12 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 25 Jul 2017 19:12:54 +0000 (12:12 -0700)
added patches:
mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch

queue-3.18/mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch b/queue-3.18/mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch
new file mode 100644 (file)
index 0000000..1582445
--- /dev/null
@@ -0,0 +1,54 @@
+From 7b82c1058ac1f8f8b9f2b8786b1f710a57a870a8 Mon Sep 17 00:00:00 2001
+From: "Maciej W. Rozycki" <macro@imgtec.com>
+Date: Fri, 16 Jun 2017 00:08:29 +0100
+Subject: MIPS: Send SIGILL for BPOSGE32 in `__compute_return_epc_for_insn'
+
+From: Maciej W. Rozycki <macro@imgtec.com>
+
+commit 7b82c1058ac1f8f8b9f2b8786b1f710a57a870a8 upstream.
+
+Fix commit e50c0a8fa60d ("Support the MIPS32 / MIPS64 DSP ASE.") and
+send SIGILL rather than SIGBUS whenever an unimplemented BPOSGE32 DSP
+ASE instruction has been encountered in `__compute_return_epc_for_insn'
+as our Reserved Instruction exception handler would in response to an
+attempt to actually execute the instruction.  Sending SIGBUS only makes
+sense for the unaligned PC case, since moved to `__compute_return_epc'.
+Adjust function documentation accordingly, correct formatting and use
+`pr_info' rather than `printk' as the other exit path already does.
+
+Fixes: e50c0a8fa60d ("Support the MIPS32 / MIPS64 DSP ASE.")
+Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
+Cc: James Hogan <james.hogan@imgtec.com>
+Cc: linux-mips@linux-mips.org
+Cc: stable@vger.kernel.org # 2.6.14+
+Patchwork: https://patchwork.linux-mips.org/patch/16396/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/mips/kernel/branch.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/arch/mips/kernel/branch.c
++++ b/arch/mips/kernel/branch.c
+@@ -396,7 +396,7 @@ int __MIPS16e_compute_return_epc(struct
+  *
+  * @regs:     Pointer to pt_regs
+  * @insn:     branch instruction to decode
+- * @returns:  -EFAULT on error and forces SIGBUS, and on success
++ * @returns:  -EFAULT on error and forces SIGILL, and on success
+  *            returns 0 or BRANCH_LIKELY_TAKEN as appropriate after
+  *            evaluating the branch.
+  */
+@@ -633,8 +633,9 @@ int __compute_return_epc_for_insn(struct
+       return ret;
+ sigill:
+-      printk("%s: DSP branch but not DSP ASE - sending SIGBUS.\n", current->comm);
+-      force_sig(SIGBUS, current);
++      pr_info("%s: DSP branch but not DSP ASE - sending SIGILL.\n",
++              current->comm);
++      force_sig(SIGILL, current);
+       return -EFAULT;
+ }
+ EXPORT_SYMBOL_GPL(__compute_return_epc_for_insn);
index 456386068e65078fe6db027ceb11379037702537..af9981d47725389f45839f9a2fbfbd03682d1444 100644 (file)
@@ -57,3 +57,4 @@ of-device-export-of_device_-get_modalias-uvent_modalias-to-modules.patch
 spmi-include-of-based-modalias-in-device-uevent.patch
 tracing-fix-kmemleak-in-instance_rmdir.patch
 alarmtimer-don-t-rate-limit-one-shot-timers.patch
+mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch