Messages in this thread | | | Date | Wed, 26 Jun 2013 18:14:52 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH v3] kernel/signal.c: fix BUG_ON with SIG128 (MIPS) |
| |
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@imgtec.com> > Cc: Ralf Baechle <ralf@linux-mips.org> > Cc: Al Viro <viro@zeniv.linux.org.uk> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Oleg Nesterov <oleg@redhat.com> > Cc: Kees Cook <keescook@chromium.org> > Cc: David Daney <david.daney@cavium.com> > Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> > Cc: David Howells <dhowells@redhat.com> > Cc: Dave Jones <davej@redhat.com> > Cc: linux-mips@linux-mips.org > Cc: stable@vger.kernel.org > --- > 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.
| |