diff options
-rw-r--r-- | arch/mips/kernel/traps.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index beba1e616b6e..142d2bede024 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -1056,15 +1056,9 @@ static int default_cu2_call(struct notifier_block *nfb, unsigned long action, | |||
1056 | { | 1056 | { |
1057 | struct pt_regs *regs = data; | 1057 | struct pt_regs *regs = data; |
1058 | 1058 | ||
1059 | switch (action) { | 1059 | die_if_kernel("COP2: Unhandled kernel unaligned access or invalid " |
1060 | default: | ||
1061 | die_if_kernel("Unhandled kernel unaligned access or invalid " | ||
1062 | "instruction", regs); | 1060 | "instruction", regs); |
1063 | /* Fall through */ | 1061 | force_sig(SIGILL, current); |
1064 | |||
1065 | case CU2_EXCEPTION: | ||
1066 | force_sig(SIGILL, current); | ||
1067 | } | ||
1068 | 1062 | ||
1069 | return NOTIFY_OK; | 1063 | return NOTIFY_OK; |
1070 | } | 1064 | } |
@@ -1080,10 +1074,11 @@ asmlinkage void do_cpu(struct pt_regs *regs) | |||
1080 | unsigned long __maybe_unused flags; | 1074 | unsigned long __maybe_unused flags; |
1081 | 1075 | ||
1082 | prev_state = exception_enter(); | 1076 | prev_state = exception_enter(); |
1083 | die_if_kernel("do_cpu invoked from kernel context!", regs); | ||
1084 | |||
1085 | cpid = (regs->cp0_cause >> CAUSEB_CE) & 3; | 1077 | cpid = (regs->cp0_cause >> CAUSEB_CE) & 3; |
1086 | 1078 | ||
1079 | if (cpid != 2) | ||
1080 | die_if_kernel("do_cpu invoked from kernel context!", regs); | ||
1081 | |||
1087 | switch (cpid) { | 1082 | switch (cpid) { |
1088 | case 0: | 1083 | case 0: |
1089 | epc = (unsigned int __user *)exception_epc(regs); | 1084 | epc = (unsigned int __user *)exception_epc(regs); |