From ffb20906ff21d166c4947fa402f71cd5309497df Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 25 Jul 2017 12:12:54 -0700 Subject: [PATCH] 3.18-stable patches added patches: mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch --- ...e32-in-__compute_return_epc_for_insn.patch | 54 +++++++++++++++++++ queue-3.18/series | 1 + 2 files changed, 55 insertions(+) create mode 100644 queue-3.18/mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch 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 index 00000000000..15824456d0f --- /dev/null +++ b/queue-3.18/mips-send-sigill-for-bposge32-in-__compute_return_epc_for_insn.patch @@ -0,0 +1,54 @@ +From 7b82c1058ac1f8f8b9f2b8786b1f710a57a870a8 Mon Sep 17 00:00:00 2001 +From: "Maciej W. Rozycki" +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 + +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 +Cc: James Hogan +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-3.18/series b/queue-3.18/series index 456386068e6..af9981d4772 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -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 -- 2.47.3