This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]