linux-mips
[Top] [All Lists]

[PATCH] MIPS: Use force_sig when handling address errors.

To: linux-mips@linux-mips.org, ralf@linux-mips.org, florian@openwrt.org
Subject: [PATCH] MIPS: Use force_sig when handling address errors.
From: David Daney <ddaney@caviumnetworks.com>
Date: Tue, 5 May 2009 12:49:47 -0700
Cc: David Daney <ddaney@caviumnetworks.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
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


<Prev in Thread] Current Thread [Next in Thread>