This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/5] m68k: Fix sigaction kernel definition (BZ #23960)
On 16/12/2018 18:06, Aurelien Jarno wrote:
> Hi,
>
> On 2018-12-12 16:52, Adhemerval Zanella wrote:
>>
>>
>> On 12/12/2018 08:41, Andreas Schwab wrote:
>>> On Dez 12 2018, Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote:
>>>
>>>> The m68k kernel does define SA_RESTORER on arch/m68k/include/asm/signal.h
>>>> (__ARCH_HAS_SA_RESTORER),
>>>
>>> These are not the same. The latter only tells <linux/signal_types.h> to
>>> add the sa_restorer member, independent of SA_RESTORER (which m68k
>>> doesn't define).
>>>
>>>> but the only difference it makes for m68k is at flush_signal_handlers
>>>> where kernel sets the sa_restorer to NULL. So it indeed should be safe
>>>> to just use default kernel_sigaction.h (I don't see any signal test
>>>> issues). Updated patch below.
>>>
>>> This fails to add the sa_restorer member, causing the signal mask to be
>>> mishandled.
>>>
>>> Andreas.
>>>
>>
>> Updated patch below.
>>
>> --
>>
>> [BZ #23960]
>> * sysdeps/unix/sysv/linux/kernel_sigaction.h (HAS_SA_RESTORER):
>> Define if SA_RESTORER is defined.
>> (kernel_sigaction): Define sa_restorer if HAS_SA_RESTORER is defined.
>> (SET_SA_RESTORER, RESET_SA_RESTORER): Define iff the macro are not
>> already defined.
>> * sysdeps/unix/sysv/linux/m68k/kernel_sigaction.h (SA_RESTORER,
>> kernel_sigaction, SET_SA_RESTORER, RESET_SA_RESTORER): Remove
>> definitions.
>> (HAS_SA_RESTORER): Define.
>> * sysdeps/unix/sysv/linux/sparc/kernel_sigaction.h (SA_RESTORER,
>> SET_SA_RESTORER, RESET_SA_RESTORER): Remove definition.
>> (HAS_SA_RESTORER): Define.
>> * sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h: Include generic
>> kernel_sigaction after define SET_SA_RESTORER and RESET_SA_RESTORER.
>> * sysdeps/unix/sysv/linux/powerpc/kernel_sigaction.h: Likewise.
>> * sysdeps/unix/sysv/linux/s390/kernel_sigaction.h: Likewise.
>> * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
>
> [ snip ]
>
>> diff --git a/sysdeps/unix/sysv/linux/s390/kernel_sigaction.h b/sysdeps/unix/sysv/linux/s390/kernel_sigaction.h
>> index 7a6a2c4f29..14f44c200b 100644
>> --- a/sysdeps/unix/sysv/linux/s390/kernel_sigaction.h
>> +++ b/sysdeps/unix/sysv/linux/s390/kernel_sigaction.h
>> @@ -30,3 +30,5 @@ struct kernel_sigaction
>> (kact)->sa_restorer = (act)->sa_restorer
>> #define RESET_SA_RESTORER(act, kact) \
>> (act)->sa_restorer = (kact)->sa_restorer
>> +
>> +#include <sysdeps/unix/sysv/linux/kernel_sigaction.h>
>
> This is not correct, you should also remove struct kernel_sigaction from
> this file, like it was done in the initial version of the patchset
> (patch 5).
>
> Aurelien
>
Thanks for catching it, this is an mistake with my local rebase. I remove
this change for s390 kernel_sigaction.h for this patch.