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)
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
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net