On 06/26, James Hogan wrote: > > On 25/06/13 23:13, James Hogan wrote: > BUG_ON(exit_code & 0x80); /* core dumps don't get here */ > > As a quick fix, mask out higher bits in the signal number. This > effectively matches the exit code from other code paths but avoids the > BUG_ON. > > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Oleg Nesterov <oleg@xxxxxxxxxx> > Cc: Kees Cook <keescook@xxxxxxxxxxxx> > Cc: David Daney <david.daney@xxxxxxxxxx> > Cc: "Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> > Cc: David Howells <dhowells@xxxxxxxxxx> > Cc: Dave Jones <davej@xxxxxxxxxx> > Cc: linux-mips@xxxxxxxxxxxxxx > Cc: stable@xxxxxxxxxxxxxxx > --- > kernel/signal.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/kernel/signal.c b/kernel/signal.c > index 113411b..9ea8f4f 100644 > --- a/kernel/signal.c > +++ b/kernel/signal.c > @@ -2366,8 +2366,14 @@ relock: > > /* > * Death signals, no core dump. > + * > + * Some architectures (MIPS) have 128 signals which doesn't play > + * nicely with the exit code since there are only 7 bits to > + * store the terminating signal number. Mask out higher bits to > + * avoid overflowing into the core dump bit and triggering > + * BUG_ON in do_group_exit. > */ > - do_group_exit(info->si_signo); > + do_group_exit(info->si_signo & 0x7f); Or simply remove the BUG_ON(), this can equally confuse wait(status). 128 & 0x7f == 0. Still I think it would be better to change _NSIG on mips. Oleg.