signal: always clear sa_restorer on execve
Subsystems (9)
A message that is not in the archive (sent off-list or not yet received): [email protected]
Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT):
Quoted 22 lines
Hello
The patch for
sa_restorerwill break mips builds, sincesa_restorerisnt defined as field within the struct, but the MACRO is. so use the__ARCH_HAS_SA_RESTORERway which is implemented in that way in linux 3.9 or simply revert the patchregards,
Sebastian GottschallSignature · 11 lines
Mit freundlichen Grüssen / Regards Sebastian Gottschall / CTO NewMedia-NET GmbH - DD-WRT Firmensitz: Berliner Ring 101, 64625 Bensheim Registergericht: Amtsgericht Darmstadt, HRB 25473 Geschäftsführer: Peter Steinhäuser, Christian Scheele http://www.dd-wrt.com email: [email protected] Tel.: +496251-582650 / Fax: +496251-5826565
Signature · 11 lines
Mit freundlichen Grüssen / Regards Sebastian Gottschall / CTO NewMedia-NET GmbH - DD-WRT Firmensitz: Berliner Ring 101, 64625 Bensheim Registergericht: Amtsgericht Darmstadt, HRB 25473 Geschäftsführer: Peter Steinhäuser, Christian Scheele http://www.dd-wrt.com email: [email protected] Tel.: +496251-582650 / Fax: +496251-5826565
Quoted 7 lines · Sebastian Gottschall (DD-WRT)
Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT):
Quoted 6 lines
Hello
The patch for
sa_restorerwill break mips builds, sincesa_restorerisnt defined as field within the struct, but the MACRO is. so use the__ARCH_HAS_SA_RESTORERway which is implemented in that way in linux 3.9 or simply revert the patch
This also appears to break blackfin, ia64, parisc and tile.
I think for earlier 3.x.y series we can use one of the attached (untested) patches to define __ARCH_HAS_SA_RESTORER appropriately, and then apply the upstream change:
commit 522cff142d7d2f9230839c9e1f21a4d8bcc22a4a
Author: Andrew Morton <[email protected]> Date: Wed Mar 13 14:59:34 2013 -0700
kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER
Ben.
Signature · 2 lines
Ben Hutchings It is easier to write an incorrect program than to understand a correct one.
From: Ben Hutchings <[email protected]>
Date: Sun, 25 Nov 2012 22:24:19 -0500
Subject: signal: Fix use of missing sa_restorer field
flush_signal_handlers() needs to know whether sigaction::sa_restorer is defined, not whether SA_RESTORER is defined. Define the __ARCH_HAS_SA_RESTORER macro to indicate this.
Vaguely based on upstream commit 574c4866e33d 'consolidate kernel-side struct sigaction declarations'.
---
arch/arm/include/asm/signal.h +1 -0
@@ -127,6 +127,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/avr32/include/asm/signal.h +1 -0
@@ -128,6 +128,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/cris/include/asm/signal.h +1 -0
@@ -122,6 +122,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/h8300/include/asm/signal.h +1 -0
@@ -121,6 +121,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m32r/include/asm/signal.h +1 -0
@@ -123,6 +123,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m68k/include/asm/signal.h +1 -0
@@ -119,6 +119,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/mn10300/include/asm/signal.h +1 -0
@@ -131,6 +131,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/powerpc/include/asm/signal.h +1 -0
@@ -109,6 +109,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/s390/include/asm/signal.h +1 -0
@@ -131,6 +131,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/sparc/include/asm/signal.h +1 -0
@@ -191,6 +191,7 @@ struct __old_sigaction {unsigned long sa_flags;void (*sa_restorer)(void );/* not used by Linux/SPARC yet */ }; +#define __ARCH_HAS_SA_RESTORER typedef struct sigaltstack { void __user *ss_sp;
arch/x86/include/asm/signal.h +2 -0
@@ -125,6 +125,8 @@ typedef unsigned long sigset_t;extern void do_notify_resume (struct pt_regs *,void *,__u32 );# endif /* __KERNEL__ */ +#define __ARCH_HAS_SA_RESTORER +#ifdef __i386__# ifdef __KERNEL__ struct old_sigaction {
arch/xtensa/include/asm/signal.h +1 -0
@@ -133,6 +133,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
include/asm-generic/signal.h +4 -0
@@ -99,6 +99,10 @@ typedef unsigned long old_sigset_t;#include <asm-generic/signal-defs.h> +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +struct sigaction {__sighandler_t sa_handler;unsigned long sa_flags;
From: Ben Hutchings <[email protected]>
Date: Sun, 25 Nov 2012 22:24:19 -0500
Subject: signal: Fix use of missing sa_restorer field
flush_signal_handlers() needs to know whether sigaction::sa_restorer is defined, not whether SA_RESTORER is defined. Define the __ARCH_HAS_SA_RESTORER macro to indicate this.
Vaguely based on upstream commit 574c4866e33d 'consolidate kernel-side struct sigaction declarations'.
---
arch/arm/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/avr32/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/cris/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/h8300/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m32r/include/asm/signal.h +1 -0
@@ -22,6 +22,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m68k/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/mn10300/include/asm/signal.h +1 -0
@@ -39,6 +39,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/powerpc/include/asm/signal.h +1 -0
@@ -1,6 +1,7 @@#ifndef _ASM_POWERPC_SIGNAL_H#define _ASM_POWERPC_SIGNAL_H +#define __ARCH_HAS_SA_RESTORER#include <uapi/asm/signal.h> #endif /* _ASM_POWERPC_SIGNAL_H */
arch/s390/include/asm/signal.h +1 -0
@@ -34,6 +34,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/sparc/include/asm/signal.h +2 -0
@@ -26,5 +26,7 @@ struct k_sigaction {void __user *ka_restorer; }; +#define __ARCH_HAS_SA_RESTORER +#endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGNAL_H) */
arch/x86/include/asm/signal.h +3 -0
@@ -31,6 +31,9 @@ typedef sigset_t compat_sigset_t;#include <uapi/asm/signal.h> #ifndef __ASSEMBLY__ extern void do_notify_resume(struct pt_regs *, void *, __u32); + +#define __ARCH_HAS_SA_RESTORER + #ifdef __i386__ struct old_sigaction { __sighandler_t sa_handler;
arch/xtensa/include/asm/signal.h +1 -0
@@ -21,6 +21,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
include/uapi/asm-generic/signal.h +4 -0
@@ -93,6 +93,10 @@ typedef unsigned long old_sigset_t;#include <asm-generic/signal-defs.h> +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +struct sigaction {__sighandler_t sa_handler;unsigned long sa_flags;
signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer
Quoted 15 lines · Ben Hutchings
Quoted 7 lines · Sebastian Gottschall (DD-WRT)
Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT):
Quoted 6 lines
Hello
The patch for
sa_restorerwill break mips builds, sincesa_restorerisnt defined as field within the struct, but the MACRO is. so use the__ARCH_HAS_SA_RESTORERway which is implemented in that way in linux 3.9 or simply revert the patchThis also appears to break blackfin, ia64, parisc and tile.
I think for earlier 3.x.y series we can use one of the attached (untested) patches to define
__ARCH_HAS_SA_RESTORERappropriately, and then apply the upstream change:
Quoted 7 lines
commit
522cff142d7d2f9230839c9e1f21a4d8bcc22a4aAuthor: Andrew Morton <[email protected]> Date: Wed Mar 13 14:59:34 2013 -0700
kernel/signal.c: use__ARCH_HAS_SA_RESTORERinstead ofSA_RESTORERBen.
The Debian package of 3.2.41, which included these two patches, built on mips and ia64. (Actually it failed on ia64, but *compilation* was successful.)
(This does not, of course, prove that I didn't un-fix the information leak.)
Here is the first patch again (separate versions for 3.8.y and for earlier series), now with a more accurate subject line. I'm going to include this in 3.2.42.
Ben.
Signature · 2 lines
Ben Hutchings The two most common things in the universe are hydrogen and stupidity.
From: Ben Hutchings <[email protected]>
Date: Sun, 25 Nov 2012 22:24:19 -0500
Subject: signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer
flush_signal_handlers() needs to know whether sigaction::sa_restorer is defined, not whether SA_RESTORER is defined. Define the __ARCH_HAS_SA_RESTORER macro to indicate this.
Vaguely based on upstream commit 574c4866e33d 'consolidate kernel-side struct sigaction declarations'.
---
arch/arm/include/asm/signal.h +1 -0
@@ -127,6 +127,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/avr32/include/asm/signal.h +1 -0
@@ -128,6 +128,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/cris/include/asm/signal.h +1 -0
@@ -122,6 +122,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/h8300/include/asm/signal.h +1 -0
@@ -121,6 +121,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m32r/include/asm/signal.h +1 -0
@@ -123,6 +123,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m68k/include/asm/signal.h +1 -0
@@ -119,6 +119,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/mn10300/include/asm/signal.h +1 -0
@@ -131,6 +131,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/powerpc/include/asm/signal.h +1 -0
@@ -109,6 +109,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/s390/include/asm/signal.h +1 -0
@@ -131,6 +131,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/sparc/include/asm/signal.h +1 -0
@@ -191,6 +191,7 @@ struct __old_sigaction {unsigned long sa_flags;void (*sa_restorer)(void );/* not used by Linux/SPARC yet */ }; +#define __ARCH_HAS_SA_RESTORER typedef struct sigaltstack { void __user *ss_sp;
arch/x86/include/asm/signal.h +2 -0
@@ -125,6 +125,8 @@ typedef unsigned long sigset_t;extern void do_notify_resume (struct pt_regs *,void *,__u32 );# endif /* __KERNEL__ */ +#define __ARCH_HAS_SA_RESTORER +#ifdef __i386__# ifdef __KERNEL__ struct old_sigaction {
arch/xtensa/include/asm/signal.h +1 -0
@@ -133,6 +133,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
include/asm-generic/signal.h +4 -0
@@ -99,6 +99,10 @@ typedef unsigned long old_sigset_t;#include <asm-generic/signal-defs.h> +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +struct sigaction {__sighandler_t sa_handler;unsigned long sa_flags;
From: Ben Hutchings <[email protected]>
Date: Sun, 25 Nov 2012 22:24:19 -0500
Subject: signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer
flush_signal_handlers() needs to know whether sigaction::sa_restorer is defined, not whether SA_RESTORER is defined. Define the __ARCH_HAS_SA_RESTORER macro to indicate this.
Vaguely based on upstream commit 574c4866e33d 'consolidate kernel-side struct sigaction declarations'.
---
arch/arm/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/avr32/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/cris/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/h8300/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m32r/include/asm/signal.h +1 -0
@@ -22,6 +22,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/m68k/include/asm/signal.h +1 -0
@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/mn10300/include/asm/signal.h +1 -0
@@ -39,6 +39,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/powerpc/include/asm/signal.h +1 -0
@@ -1,6 +1,7 @@#ifndef _ASM_POWERPC_SIGNAL_H#define _ASM_POWERPC_SIGNAL_H +#define __ARCH_HAS_SA_RESTORER#include <uapi/asm/signal.h> #endif /* _ASM_POWERPC_SIGNAL_H */
arch/s390/include/asm/signal.h +1 -0
@@ -34,6 +34,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
arch/sparc/include/asm/signal.h +2 -0
@@ -26,5 +26,7 @@ struct k_sigaction {void __user *ka_restorer; }; +#define __ARCH_HAS_SA_RESTORER +#endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGNAL_H) */
arch/x86/include/asm/signal.h +3 -0
@@ -31,6 +31,9 @@ typedef sigset_t compat_sigset_t;#include <uapi/asm/signal.h> #ifndef __ASSEMBLY__ extern void do_notify_resume(struct pt_regs *, void *, __u32); + +#define __ARCH_HAS_SA_RESTORER + #ifdef __i386__ struct old_sigaction { __sighandler_t sa_handler;
arch/xtensa/include/asm/signal.h +1 -0
@@ -21,6 +21,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;
include/uapi/asm-generic/signal.h +4 -0
@@ -93,6 +93,10 @@ typedef unsigned long old_sigset_t;#include <asm-generic/signal-defs.h> +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +struct sigaction {__sighandler_t sa_handler;unsigned long sa_flags;
Re: signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer
Quoted 28 lines · Ben Hutchings
Quoted 15 lines · Ben Hutchings
Quoted 7 lines · Sebastian Gottschall (DD-WRT)
Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT):
Quoted 6 lines
Hello
The patch for
sa_restorerwill break mips builds, sincesa_restorerisnt defined as field within the struct, but the MACRO is. so use the__ARCH_HAS_SA_RESTORERway which is implemented in that way in linux 3.9 or simply revert the patchThis also appears to break blackfin, ia64, parisc and tile.
I think for earlier 3.x.y series we can use one of the attached (untested) patches to define
__ARCH_HAS_SA_RESTORERappropriately, and then apply the upstream change:Quoted 7 lines
commit
522cff142d7d2f9230839c9e1f21a4d8bcc22a4aAuthor: Andrew Morton <[email protected]> Date: Wed Mar 13 14:59:34 2013 -0700
kernel/signal.c: use__ARCH_HAS_SA_RESTORERinstead ofSA_RESTORERBen.
The Debian package of 3.2.41, which included these two patches, built on mips and ia64. (Actually it failed on ia64, but *compilation* was successful.)
Quoted 6 lines
(This does not, of course, prove that I didn't un-fix the information leak.)
Here is the first patch again (separate versions for 3.8.y and for earlier series), now with a more accurate subject line. I'm going to include this in 3.2.42.
Thanks a lot Ben. I'm queuing it for 3.5.
Cheers,
--
Luis
Quoted 306 lines
Ben.
Signature · 18 lines
Ben Hutchings The two most common things in the universe are hydrogen and stupidity. From: Ben Hutchings <[email protected]> Date: Sun, 25 Nov 2012 22:24:19 -0500 Subject: signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer flush_signal_handlers() needs to know whether sigaction::sa_restorer is defined, not whether SA_RESTORER is defined. Define the __ARCH_HAS_SA_RESTORER macro to indicate this. Vaguely based on upstream commit 574c4866e33d 'consolidate kernel-side struct sigaction declarations'. Signed-off-by: Ben Hutchings <[email protected]> Cc: Al Viro <[email protected]> ---arch/arm/include/asm/signal.h +1
-0@@ -127,6 +127,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/avr32/include/asm/signal.h +1
-0@@ -128,6 +128,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/cris/include/asm/signal.h +1
-0@@ -122,6 +122,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/h8300/include/asm/signal.h +1
-0@@ -121,6 +121,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/m32r/include/asm/signal.h +1
-0@@ -123,6 +123,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/m68k/include/asm/signal.h +1
-0@@ -119,6 +119,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/mn10300/include/asm/signal.h +1
-0@@ -131,6 +131,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/powerpc/include/asm/signal.h +1
-0@@ -109,6 +109,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/s390/include/asm/signal.h +1
-0@@ -131,6 +131,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/sparc/include/asm/signal.h +1
-0@@ -191,6 +191,7 @@ struct __old_sigaction {unsigned long sa_flags;void (*sa_restorer)(void );/* not used by Linux/SPARC yet */ }; +#define __ARCH_HAS_SA_RESTORER typedef struct sigaltstack { void __user *ss_sp;arch/x86/include/asm/signal.h +2
-0@@ -125,6 +125,8 @@ typedef unsigned long sigset_t;extern void do_notify_resume (struct pt_regs *,void *,__u32 );# endif /* __KERNEL__ */ +#define __ARCH_HAS_SA_RESTORER +#ifdef __i386__# ifdef __KERNEL__ struct old_sigaction {arch/xtensa/include/asm/signal.h +1
-0@@ -133,6 +133,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;include/asm-generic/signal.h +4
-0@@ -99,6 +99,10 @@ typedef unsigned long old_sigset_t;#include <asm-generic/signal-defs.h> +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +struct sigaction {__sighandler_t sa_handler;unsigned long sa_flags;From: Ben Hutchings <[email protected]>
Date: Sun, 25 Nov 2012 22:24:19 -0500
Subject: signal: Define__ARCH_HAS_SA_RESTORERso we know whether to clearsa_restorer
flush_signal_handlers()needs to know whethersigaction::sa_restoreris defined, not whetherSA_RESTORERis defined. Define the__ARCH_HAS_SA_RESTORERmacro to indicate this.Vaguely based on upstream commit
574c4866e33d'consolidate kernel-side struct sigaction declarations'.Signed-off-by Ben Hutchings <[email protected]>Cc Al Viro <[email protected]>---
arch/arm/include/asm/signal.h +1
-0@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/avr32/include/asm/signal.h +1
-0@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/cris/include/asm/signal.h +1
-0@@ -29,6 +29,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/h8300/include/asm/signal.h +1
-0@@ -29,6 +29,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/m32r/include/asm/signal.h +1
-0@@ -22,6 +22,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/m68k/include/asm/signal.h +1
-0@@ -29,6 +29,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/mn10300/include/asm/signal.h +1
-0@@ -39,6 +39,7 @@ struct sigaction {__sigrestore_t sa_restorer;sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/powerpc/include/asm/signal.h +1
-0@@ -1,6 +1,7 @@#ifndef _ASM_POWERPC_SIGNAL_H#define _ASM_POWERPC_SIGNAL_H +#define __ARCH_HAS_SA_RESTORER#include <uapi/asm/signal.h> #endif /* _ASM_POWERPC_SIGNAL_H */ arch/s390/include/asm/signal.h +1
-0@@ -34,6 +34,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;arch/sparc/include/asm/signal.h +2
-0@@ -26,5 +26,7 @@ struct k_sigaction {void __user *ka_restorer; }; +#define __ARCH_HAS_SA_RESTORER +#endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGNAL_H) */ arch/x86/include/asm/signal.h +3
-0@@ -31,6 +31,9 @@ typedef sigset_t compat_sigset_t;#include <uapi/asm/signal.h> #ifndef __ASSEMBLY__ extern void do_notify_resume(struct pt_regs *, void *, __u32); + +#define __ARCH_HAS_SA_RESTORER + #ifdef __i386__ struct old_sigaction { __sighandler_t sa_handler;arch/xtensa/include/asm/signal.h +1
-0@@ -21,6 +21,7 @@ struct sigaction {void (*sa_restorer)(void );sigset_t sa_mask;/* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORERstruct k_sigaction {struct sigaction sa;include/uapi/asm-generic/signal.h +4
-0@@ -93,6 +93,10 @@ typedef unsigned long old_sigset_t;#include <asm-generic/signal-defs.h> +#ifdef SA_RESTORER +#define __ARCH_HAS_SA_RESTORER +#endif +struct sigaction {__sighandler_t sa_handler;unsigned long sa_flags;