linux-mips
[Top] [All Lists]

Re: MIPS: return after handling coprocessor 2 exception

To: David Daney <ddaney@caviumnetworks.com>
Subject: Re: MIPS: return after handling coprocessor 2 exception
From: Jesper Nilsson <jesper@jni.nu>
Date: Thu, 17 Jun 2010 21:04:56 +0200
Cc: Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
In-reply-to: <4C1A57AE.9080706@caviumnetworks.com>
References: <20100617132554.GB24162@jni.nu> <4C1A57AE.9080706@caviumnetworks.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.3i
On Thu, Jun 17, 2010 at 10:13:18AM -0700, David Daney wrote:
> On 06/17/2010 06:25 AM, Jesper Nilsson wrote:
> >Breaking here dropped us to the default code which always sends
> >a SIGILL to the current process, no matter what the CU2 notifier says.
> >
> >Signed-off-by: Jesper Nilsson<jesper@jni.nu>
> >---
> >  traps.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
> >index 8bdd6a6..8527808 100644
> >--- a/arch/mips/kernel/traps.c
> >+++ b/arch/mips/kernel/traps.c
> >@@ -976,7 +976,7 @@ asmlinkage void do_cpu(struct pt_regs *regs)
> >
> >     case 2:
> >             raw_notifier_call_chain(&cu2_chain, CU2_EXCEPTION, regs);
> >-            break;
> >+            return;
> >
> 
> What happens when the call chain is empty, and the proper action *is* 
> SIGILL?

Well, since there is a default notifier installed at the end, it will
correctly return SIGILL.

See the definition of default_cu2_call in the same file.

> David Daney

/^JN - Jesper Nilsson
--
                  Jesper Nilsson -- jesper_at_jni.nu

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