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