hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/arch/m68k/kernel/traps.c
....@@ -30,6 +30,7 @@
3030 #include <linux/init.h>
3131 #include <linux/ptrace.h>
3232 #include <linux/kallsyms.h>
33
+#include <linux/extable.h>
3334
3435 #include <asm/setup.h>
3536 #include <asm/fpu.h>
....@@ -549,7 +550,8 @@
549550 errorcode |= 2;
550551
551552 if (mmusr & (MMU_I | MMU_WP)) {
552
- if (ssw & 4) {
553
+ /* We might have an exception table for this PC */
554
+ if (ssw & 4 && !search_exception_tables(fp->ptregs.pc)) {
553555 pr_err("Data %s fault at %#010lx in %s (pc=%#lx)\n",
554556 ssw & RW ? "read" : "write",
555557 fp->un.fmtb.daddr,
....@@ -1136,7 +1138,7 @@
11361138 pr_crit("%s: %08x\n", str, nr);
11371139 show_registers(fp);
11381140 add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
1139
- do_exit(SIGSEGV);
1141
+ make_task_dead(SIGSEGV);
11401142 }
11411143
11421144 asmlinkage void set_esp0(unsigned long ssp)