Commit a6d5ff04 authored by David Daney's avatar David Daney Committed by Ralf Baechle

MIPS: Use force_sig when handling address errors.

When init is started it is SIGNAL_UNKILLABLE.  If it were to get an
address error, we would try to send it SIGBUS, but it would be ignored
and the faulting instruction restarted.  This results in an endless
loop.

We need to use force_sig() instead so it will actually die and give us
some useful information.
Reported-by: default avatarFlorian Fainelli <florian@openwrt.org>
Signed-off-by: default avatarDavid Daney <ddaney@caviumnetworks.com>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent d0ce9a5a
...@@ -482,19 +482,19 @@ static void emulate_load_store_insn(struct pt_regs *regs, ...@@ -482,19 +482,19 @@ static void emulate_load_store_insn(struct pt_regs *regs,
return; return;
die_if_kernel("Unhandled kernel unaligned access", regs); die_if_kernel("Unhandled kernel unaligned access", regs);
send_sig(SIGSEGV, current, 1); force_sig(SIGSEGV, current);
return; return;
sigbus: sigbus:
die_if_kernel("Unhandled kernel unaligned access", regs); die_if_kernel("Unhandled kernel unaligned access", regs);
send_sig(SIGBUS, current, 1); force_sig(SIGBUS, current);
return; return;
sigill: sigill:
die_if_kernel("Unhandled kernel unaligned access or invalid instruction", regs); die_if_kernel("Unhandled kernel unaligned access or invalid instruction", regs);
send_sig(SIGILL, current, 1); force_sig(SIGILL, current);
} }
asmlinkage void do_ade(struct pt_regs *regs) asmlinkage void do_ade(struct pt_regs *regs)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment