Messages in this thread | | | Date | Wed, 29 May 2013 22:56:44 +0100 | Subject | Re: [RFC PATCH] kernel/signal.c: avoid BUG_ON with SIG128 (MIPS) | From | James Hogan <> |
| |
On 29 May 2013 18:36, Oleg Nesterov <oleg@redhat.com> wrote: > On 05/29, David Daney wrote: >> >> On 05/29/2013 10:01 AM, James Hogan wrote: >>> MIPS has 128 signals, the highest of which has the number 128. The >> >> I wonder if we should change the ABI and reduce the number of signals to >> 127 instead of this patch. > > Same thoughts...
I'll give it a try. I wouldn't have thought it'd break anything, but you never know. glibc (incorrectly) sets [__]SIGRTMAX to 127 already. On the other hand uClibc sets it to 128, so anything built against uClibc that uses signals SIGRTMAX-n (where n may be 0) or uses an excessive number of rt signals starting from SIGRTMIN (sounds unlikely) could well need an updated uClibc (or a full rebuild if it's crazy enough to use __SIGRTMAX).
>>> @@ -2366,8 +2366,12 @@ relock: >>> >>> /* >>> * Death signals, no core dump. >>> + * >>> + * MIPS has a signal number 128 which clashes with the core dump >>> + * bit. If this was the signal we still want to report a valid >>> + * exit code, so round it down to 127. >>> */ >>> - do_group_exit(info->si_signo); >>> + do_group_exit(min(info->si_signo, 127)); > > This avoids BUG_ON() but obviously fools WIFSIGNALED(), doesn't look > very nice.
Agreed.
Cheers James
| |