diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2018-04-18 00:30:31 +0200 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2018-04-25 17:40:57 +0200 |
commit | 535906c684fca45a7a6c558a5ac63e901cba8fb3 (patch) | |
tree | b761555ce008f4fda19e490e70d788f2b5ef2a7e /arch/alpha/kernel/traps.c | |
parent | signal: Add TRAP_UNK si_code for undiagnosted trap exceptions (diff) | |
download | linux-535906c684fca45a7a6c558a5ac63e901cba8fb3.tar.xz linux-535906c684fca45a7a6c558a5ac63e901cba8fb3.zip |
signal/alpha: Replace TRAP_FIXME with TRAP_UNK
Using an si_code of 0 that aliases with SI_USER is clearly the wrong
thing to do, and causes problems in interesting ways.
For it really is not clear to me if using TRAP_UNK bugcheck or
the default case of gentrap is really the best way to handle
things. There is certainly enough information that that a more
specific si_code could potentially be used. That said TRAP_UNK
is definitely an improvement over 0 as it removes the ambiguiuty
of what si_code of 0 with SIGTRAP means on alpha.
Recent history suggests no actually cares about crazy corner cases of
the kernel behavior like this so I don't expect any regressions from
changing this. However if something does happen this change is easy
to revert.
Cc: Helge Deller <deller@gmx.de>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Matt Turner <mattst88@gmail.com>
Cc: linux-alpha@vger.kernel.org
Fixes: 0a635c7a84cf ("Fill in siginfo_t.")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Diffstat (limited to 'arch/alpha/kernel/traps.c')
-rw-r--r-- | arch/alpha/kernel/traps.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index 422b676b28f2..242c83d86ace 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c @@ -288,7 +288,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) case 1: /* bugcheck */ info.si_signo = SIGTRAP; info.si_errno = 0; - info.si_code = TRAP_FIXME; + info.si_code = TRAP_UNK; info.si_addr = (void __user *) regs->pc; info.si_trapno = 0; send_sig_info(SIGTRAP, &info, current); @@ -350,7 +350,7 @@ do_entIF(unsigned long type, struct pt_regs *regs) case GEN_SUBRNG7: default: signo = SIGTRAP; - code = TRAP_FIXME; + code = TRAP_UNK; break; } |