use force_sig when handling address errors
SVN-Revision: 15642
This commit is contained in:
parent
d73f4eaecc
commit
378145454d
@ -0,0 +1,45 @@
|
||||
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: Florian Fainelli <florian@openwrt.org>
|
||||
|
||||
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
|
||||
---
|
||||
arch/mips/kernel/unaligned.c | 6 +++---
|
||||
1 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c
|
||||
index bf4c4a9..67bd626 100644
|
||||
--- a/arch/mips/kernel/unaligned.c
|
||||
+++ b/arch/mips/kernel/unaligned.c
|
||||
@@ -482,19 +482,19 @@ fault:
|
||||
return;
|
||||
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
- send_sig(SIGSEGV, current, 1);
|
||||
+ force_sig(SIGSEGV, current);
|
||||
|
||||
return;
|
||||
|
||||
sigbus:
|
||||
die_if_kernel("Unhandled kernel unaligned access", regs);
|
||||
- send_sig(SIGBUS, current, 1);
|
||||
+ force_sig(SIGBUS, current);
|
||||
|
||||
return;
|
||||
|
||||
sigill:
|
||||
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)
|
||||
--
|
||||
1.6.0.6
|
||||
|
Loading…
Reference in New Issue
Block a user