* Re: [ 12/48] signal: always clear sa_restorer on execve [not found] <514A07DC.60708@dd-wrt.com> @ 2013-03-20 20:43 ` Sebastian Gottschall (DD-WRT) 2013-03-21 1:41 ` Ben Hutchings 0 siblings, 1 reply; 5+ messages in thread From: Sebastian Gottschall (DD-WRT) @ 2013-03-20 20:43 UTC (permalink / raw) To: stable, linux-kernel Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT): > Hello > > The patch for sa_restorer will break mips builds, since sa_restorer > isnt defined as field within the struct, but the MACRO is. > so use the __ARCH_HAS_SA_RESTORER way which is implemented in that way > in linux 3.9 or simply revert the patch > > > regards, > Sebastian Gottschall > > -- > 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: s.gottschall@dd-wrt.com > Tel.: +496251-582650 / Fax: +496251-5826565 > -- 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: s.gottschall@dd-wrt.com Tel.: +496251-582650 / Fax: +496251-5826565 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [ 12/48] signal: always clear sa_restorer on execve 2013-03-20 20:43 ` [ 12/48] signal: always clear sa_restorer on execve Sebastian Gottschall (DD-WRT) @ 2013-03-21 1:41 ` Ben Hutchings 2013-03-26 4:45 ` signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer Ben Hutchings 0 siblings, 1 reply; 5+ messages in thread From: Ben Hutchings @ 2013-03-21 1:41 UTC (permalink / raw) To: Sebastian Gottschall (DD-WRT) Cc: stable, linux-kernel, Al Viro, Andrew Morton [-- Attachment #1.1: Type: text/plain, Size: 971 bytes --] On Wed, 2013-03-20 at 21:43 +0100, Sebastian Gottschall (DD-WRT) wrote: > Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT): > > Hello > > > > The patch for sa_restorer will break mips builds, since sa_restorer > > isnt defined as field within the struct, but the MACRO is. > > so use the __ARCH_HAS_SA_RESTORER way 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 <akpm@linux-foundation.org> Date: Wed Mar 13 14:59:34 2013 -0700 kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER Ben. -- Ben Hutchings It is easier to write an incorrect program than to understand a correct one. [-- Attachment #1.2: signal-fix-use-of-missing-sa_restorer-field-3.0-3.2-3.4.patch --] [-- Type: text/x-patch, Size: 4436 bytes --] From: Ben Hutchings <ben@decadent.org.uk> 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'. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Cc: Al Viro <viro@zeniv.linux.org.uk> --- --- a/arch/arm/include/asm/signal.h +++ b/arch/arm/include/asm/signal.h @@ -127,6 +127,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/avr32/include/asm/signal.h +++ b/arch/avr32/include/asm/signal.h @@ -128,6 +128,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/cris/include/asm/signal.h +++ b/arch/cris/include/asm/signal.h @@ -122,6 +122,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/h8300/include/asm/signal.h +++ b/arch/h8300/include/asm/signal.h @@ -121,6 +121,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m32r/include/asm/signal.h +++ b/arch/m32r/include/asm/signal.h @@ -123,6 +123,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m68k/include/asm/signal.h +++ b/arch/m68k/include/asm/signal.h @@ -119,6 +119,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/mn10300/include/asm/signal.h +++ b/arch/mn10300/include/asm/signal.h @@ -131,6 +131,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/powerpc/include/asm/signal.h +++ b/arch/powerpc/include/asm/signal.h @@ -109,6 +109,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/s390/include/asm/signal.h +++ b/arch/s390/include/asm/signal.h @@ -131,6 +131,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/sparc/include/asm/signal.h +++ b/arch/sparc/include/asm/signal.h @@ -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; --- a/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h @@ -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 { --- a/arch/xtensa/include/asm/signal.h +++ b/arch/xtensa/include/asm/signal.h @@ -133,6 +133,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/include/asm-generic/signal.h +++ b/include/asm-generic/signal.h @@ -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; [-- Attachment #1.3: signal-fix-use-of-missing-sa_restorer-field-3.8.patch --] [-- Type: text/x-patch, Size: 4380 bytes --] From: Ben Hutchings <ben@decadent.org.uk> 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'. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Cc: Al Viro <viro@zeniv.linux.org.uk> --- --- a/arch/arm/include/asm/signal.h +++ b/arch/arm/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/avr32/include/asm/signal.h +++ b/arch/avr32/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/cris/include/asm/signal.h +++ b/arch/cris/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/h8300/include/asm/signal.h +++ b/arch/h8300/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m32r/include/asm/signal.h +++ b/arch/m32r/include/asm/signal.h @@ -22,6 +22,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m68k/include/asm/signal.h +++ b/arch/m68k/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/mn10300/include/asm/signal.h +++ b/arch/mn10300/include/asm/signal.h @@ -39,6 +39,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/powerpc/include/asm/signal.h +++ b/arch/powerpc/include/asm/signal.h @@ -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 */ --- a/arch/s390/include/asm/signal.h +++ b/arch/s390/include/asm/signal.h @@ -34,6 +34,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/sparc/include/asm/signal.h +++ b/arch/sparc/include/asm/signal.h @@ -26,5 +26,7 @@ struct k_sigaction { void __user *ka_restorer; }; +#define __ARCH_HAS_SA_RESTORER + #endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGNAL_H) */ --- a/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h @@ -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; --- a/arch/xtensa/include/asm/signal.h +++ b/arch/xtensa/include/asm/signal.h @@ -21,6 +21,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/include/uapi/asm-generic/signal.h +++ b/include/uapi/asm-generic/signal.h @@ -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; [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 828 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer 2013-03-21 1:41 ` Ben Hutchings @ 2013-03-26 4:45 ` Ben Hutchings 2013-03-26 14:04 ` Luis Henriques 0 siblings, 1 reply; 5+ messages in thread From: Ben Hutchings @ 2013-03-26 4:45 UTC (permalink / raw) To: stable; +Cc: linux-kernel, Al Viro, Andrew Morton, Sebastian Gottschall (DD-WRT) [-- Attachment #1.1: Type: text/plain, Size: 1481 bytes --] On Thu, 2013-03-21 at 01:41 +0000, Ben Hutchings wrote: > On Wed, 2013-03-20 at 21:43 +0100, Sebastian Gottschall (DD-WRT) wrote: > > Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT): > > > Hello > > > > > > The patch for sa_restorer will break mips builds, since sa_restorer > > > isnt defined as field within the struct, but the MACRO is. > > > so use the __ARCH_HAS_SA_RESTORER way 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 <akpm@linux-foundation.org> > Date: Wed Mar 13 14:59:34 2013 -0700 > > kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER > > Ben. 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. -- Ben Hutchings The two most common things in the universe are hydrogen and stupidity. [-- Attachment #1.2: signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.0-3.2-3.4.patch --] [-- Type: text/x-patch, Size: 4469 bytes --] From: Ben Hutchings <ben@decadent.org.uk> 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 <ben@decadent.org.uk> Cc: Al Viro <viro@zeniv.linux.org.uk> --- --- a/arch/arm/include/asm/signal.h +++ b/arch/arm/include/asm/signal.h @@ -127,6 +127,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/avr32/include/asm/signal.h +++ b/arch/avr32/include/asm/signal.h @@ -128,6 +128,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/cris/include/asm/signal.h +++ b/arch/cris/include/asm/signal.h @@ -122,6 +122,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/h8300/include/asm/signal.h +++ b/arch/h8300/include/asm/signal.h @@ -121,6 +121,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m32r/include/asm/signal.h +++ b/arch/m32r/include/asm/signal.h @@ -123,6 +123,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m68k/include/asm/signal.h +++ b/arch/m68k/include/asm/signal.h @@ -119,6 +119,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/mn10300/include/asm/signal.h +++ b/arch/mn10300/include/asm/signal.h @@ -131,6 +131,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/powerpc/include/asm/signal.h +++ b/arch/powerpc/include/asm/signal.h @@ -109,6 +109,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/s390/include/asm/signal.h +++ b/arch/s390/include/asm/signal.h @@ -131,6 +131,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/sparc/include/asm/signal.h +++ b/arch/sparc/include/asm/signal.h @@ -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; --- a/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h @@ -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 { --- a/arch/xtensa/include/asm/signal.h +++ b/arch/xtensa/include/asm/signal.h @@ -133,6 +133,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/include/asm-generic/signal.h +++ b/include/asm-generic/signal.h @@ -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; [-- Attachment #1.3: signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch --] [-- Type: text/x-patch, Size: 4413 bytes --] From: Ben Hutchings <ben@decadent.org.uk> 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 <ben@decadent.org.uk> Cc: Al Viro <viro@zeniv.linux.org.uk> --- --- a/arch/arm/include/asm/signal.h +++ b/arch/arm/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/avr32/include/asm/signal.h +++ b/arch/avr32/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/cris/include/asm/signal.h +++ b/arch/cris/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/h8300/include/asm/signal.h +++ b/arch/h8300/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m32r/include/asm/signal.h +++ b/arch/m32r/include/asm/signal.h @@ -22,6 +22,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/m68k/include/asm/signal.h +++ b/arch/m68k/include/asm/signal.h @@ -29,6 +29,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/mn10300/include/asm/signal.h +++ b/arch/mn10300/include/asm/signal.h @@ -39,6 +39,7 @@ struct sigaction { __sigrestore_t sa_restorer; sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/powerpc/include/asm/signal.h +++ b/arch/powerpc/include/asm/signal.h @@ -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 */ --- a/arch/s390/include/asm/signal.h +++ b/arch/s390/include/asm/signal.h @@ -34,6 +34,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/arch/sparc/include/asm/signal.h +++ b/arch/sparc/include/asm/signal.h @@ -26,5 +26,7 @@ struct k_sigaction { void __user *ka_restorer; }; +#define __ARCH_HAS_SA_RESTORER + #endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGNAL_H) */ --- a/arch/x86/include/asm/signal.h +++ b/arch/x86/include/asm/signal.h @@ -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; --- a/arch/xtensa/include/asm/signal.h +++ b/arch/xtensa/include/asm/signal.h @@ -21,6 +21,7 @@ struct sigaction { void (*sa_restorer)(void); sigset_t sa_mask; /* mask last for extensibility */ }; +#define __ARCH_HAS_SA_RESTORER struct k_sigaction { struct sigaction sa; --- a/include/uapi/asm-generic/signal.h +++ b/include/uapi/asm-generic/signal.h @@ -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; [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 828 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer 2013-03-26 4:45 ` signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer Ben Hutchings @ 2013-03-26 14:04 ` Luis Henriques 0 siblings, 0 replies; 5+ messages in thread From: Luis Henriques @ 2013-03-26 14:04 UTC (permalink / raw) To: Ben Hutchings Cc: stable, linux-kernel, Al Viro, Andrew Morton, Sebastian Gottschall (DD-WRT) On Tue, Mar 26, 2013 at 04:45:42AM +0000, Ben Hutchings wrote: > On Thu, 2013-03-21 at 01:41 +0000, Ben Hutchings wrote: > > On Wed, 2013-03-20 at 21:43 +0100, Sebastian Gottschall (DD-WRT) wrote: > > > Am 20.03.2013 20:02, schrieb Sebastian Gottschall (DD-WRT): > > > > Hello > > > > > > > > The patch for sa_restorer will break mips builds, since sa_restorer > > > > isnt defined as field within the struct, but the MACRO is. > > > > so use the __ARCH_HAS_SA_RESTORER way 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 <akpm@linux-foundation.org> > > Date: Wed Mar 13 14:59:34 2013 -0700 > > > > kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER > > > > Ben. > > 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. Thanks a lot Ben. I'm queuing it for 3.5. Cheers, -- Luis > > Ben. > > -- > Ben Hutchings > The two most common things in the universe are hydrogen and stupidity. > > From: Ben Hutchings <ben@decadent.org.uk> > 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 <ben@decadent.org.uk> > Cc: Al Viro <viro@zeniv.linux.org.uk> > --- > --- a/arch/arm/include/asm/signal.h > +++ b/arch/arm/include/asm/signal.h > @@ -127,6 +127,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/avr32/include/asm/signal.h > +++ b/arch/avr32/include/asm/signal.h > @@ -128,6 +128,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/cris/include/asm/signal.h > +++ b/arch/cris/include/asm/signal.h > @@ -122,6 +122,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/h8300/include/asm/signal.h > +++ b/arch/h8300/include/asm/signal.h > @@ -121,6 +121,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/m32r/include/asm/signal.h > +++ b/arch/m32r/include/asm/signal.h > @@ -123,6 +123,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/m68k/include/asm/signal.h > +++ b/arch/m68k/include/asm/signal.h > @@ -119,6 +119,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/mn10300/include/asm/signal.h > +++ b/arch/mn10300/include/asm/signal.h > @@ -131,6 +131,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/powerpc/include/asm/signal.h > +++ b/arch/powerpc/include/asm/signal.h > @@ -109,6 +109,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/s390/include/asm/signal.h > +++ b/arch/s390/include/asm/signal.h > @@ -131,6 +131,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/sparc/include/asm/signal.h > +++ b/arch/sparc/include/asm/signal.h > @@ -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; > --- a/arch/x86/include/asm/signal.h > +++ b/arch/x86/include/asm/signal.h > @@ -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 { > --- a/arch/xtensa/include/asm/signal.h > +++ b/arch/xtensa/include/asm/signal.h > @@ -133,6 +133,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/include/asm-generic/signal.h > +++ b/include/asm-generic/signal.h > @@ -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 <ben@decadent.org.uk> > 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 <ben@decadent.org.uk> > Cc: Al Viro <viro@zeniv.linux.org.uk> > --- > --- a/arch/arm/include/asm/signal.h > +++ b/arch/arm/include/asm/signal.h > @@ -29,6 +29,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/avr32/include/asm/signal.h > +++ b/arch/avr32/include/asm/signal.h > @@ -29,6 +29,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/cris/include/asm/signal.h > +++ b/arch/cris/include/asm/signal.h > @@ -29,6 +29,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/h8300/include/asm/signal.h > +++ b/arch/h8300/include/asm/signal.h > @@ -29,6 +29,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/m32r/include/asm/signal.h > +++ b/arch/m32r/include/asm/signal.h > @@ -22,6 +22,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/m68k/include/asm/signal.h > +++ b/arch/m68k/include/asm/signal.h > @@ -29,6 +29,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/mn10300/include/asm/signal.h > +++ b/arch/mn10300/include/asm/signal.h > @@ -39,6 +39,7 @@ struct sigaction { > __sigrestore_t sa_restorer; > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/powerpc/include/asm/signal.h > +++ b/arch/powerpc/include/asm/signal.h > @@ -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 */ > --- a/arch/s390/include/asm/signal.h > +++ b/arch/s390/include/asm/signal.h > @@ -34,6 +34,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/arch/sparc/include/asm/signal.h > +++ b/arch/sparc/include/asm/signal.h > @@ -26,5 +26,7 @@ struct k_sigaction { > void __user *ka_restorer; > }; > > +#define __ARCH_HAS_SA_RESTORER > + > #endif /* !(__ASSEMBLY__) */ > #endif /* !(__SPARC_SIGNAL_H) */ > --- a/arch/x86/include/asm/signal.h > +++ b/arch/x86/include/asm/signal.h > @@ -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; > --- a/arch/xtensa/include/asm/signal.h > +++ b/arch/xtensa/include/asm/signal.h > @@ -21,6 +21,7 @@ struct sigaction { > void (*sa_restorer)(void); > sigset_t sa_mask; /* mask last for extensibility */ > }; > +#define __ARCH_HAS_SA_RESTORER > > struct k_sigaction { > struct sigaction sa; > --- a/include/uapi/asm-generic/signal.h > +++ b/include/uapi/asm-generic/signal.h > @@ -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; ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ 00/48] 3.4.37-stable review
@ 2013-03-18 21:08 Greg Kroah-Hartman
2013-03-18 21:08 ` [ 12/48] signal: always clear sa_restorer on execve Greg Kroah-Hartman
0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2013-03-18 21:08 UTC (permalink / raw)
To: linux-kernel; +Cc: Greg Kroah-Hartman, torvalds, akpm, stable
This is the start of the stable review cycle for the 3.4.37 release.
There are 48 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed Mar 20 21:07:59 UTC 2013.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.37-rc1.gz
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 3.4.37-rc1
YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
6lowpan: Fix endianness issue in is_addr_link_local().
Mathias Krause <minipli@googlemail.com>
dcbnl: fix various netlink info leaks
Mathias Krause <minipli@googlemail.com>
rtnl: fix info leak on RTM_GETLINK request for VF devices
Hannes Frederic Sowa <hannes@stressinduktion.org>
ipv6: stop multicast forwarding to process interface scoped addresses
Cristian Bercaru <B43982@freescale.com>
bridging: fix rx_handlers return code
Paul Moore <pmoore@redhat.com>
netlabel: correctly list all the static label mappings
Vlad Yasevich <vyasevic@redhat.com>
macvlan: Set IFF_UNICAST_FLT flag to prevent unnecessary promisc mode.
Eric Dumazet <edumazet@google.com>
tun: add a missing nf_reset() in tun_net_xmit()
Neal Cardwell <ncardwell@google.com>
tcp: fix double-counted receiver RTT when leaving receiver fast path
Lorenzo Colitti <lorenzo@google.com>
net: ipv6: Don't purge default router if accept_ra=2
Cong Wang <amwang@redhat.com>
rds: limit the size allocated by rds_message_alloc()
Guillaume Nault <g.nault@alphalink.fr>
l2tp: Restore socket refcount when sendmsg succeeds
Stéphane Marchesin <marcheu@chromium.org>
drm/i915: Increase the RC6p threshold.
Guo Chao <yan@linux.vnet.ibm.com>
loopdev: remove an user triggerable oops
Guo Chao <yan@linux.vnet.ibm.com>
loopdev: fix a deadlock
Guo Chao <yan@linux.vnet.ibm.com>
block: use i_size_write() in bd_set_size()
Ben Hutchings <ben@decadent.org.uk>
hwmon: (sht15) Fix memory leak if regulator_enable() fails
Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
drm/i915: EBUSY status handling added to i915_gem_fault().
Johan Hovold <jhovold@gmail.com>
atmel_lcdfb: fix 16-bpp modes on older SOCs
Eric Sandeen <sandeen@redhat.com>
btrfs: use rcu_barrier() to wait for bdev puts at unmount
Heiko Carstens <heiko.carstens@de.ibm.com>
s390/mm: fix flush_tlb_kernel_range()
Martin Schwidefsky <schwidefsky@de.ibm.com>
s390: critical section cleanup vs. machine checks
David Rientjes <rientjes@google.com>
perf,x86: fix link failure for non-Intel configs
Linus Torvalds <torvalds@linux-foundation.org>
perf,x86: fix wrmsr_on_cpu() warning on suspend/resume
Dan Carpenter <dan.carpenter@oracle.com>
selinux: use GFP_ATOMIC under spin_lock
Benjamin Herrenschmidt <benh@kernel.crashing.org>
powerpc: Fix cputable entry for 970MP rev 1.0
Benjamin Herrenschmidt <benh@kernel.crashing.org>
powerpc: Fix STAB initialization
Marcin Jurkowski <marcin1j@gmail.com>
w1: fix oops when w1_search is called from netlink connector
Axel Lin <axel.lin@ingics.com>
hwmon: (lineage-pem) Add missing terminating entry for pem_[input|fan]_attributes
Guenter Roeck <linux@roeck-us.net>
hwmon: (pmbus/ltc2978) Fix temperature reporting
Takashi Iwai <tiwai@suse.de>
ALSA: seq: Fix missing error handling in snd_seq_timer_open()
Stephane Eranian <eranian@google.com>
perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
Jiri Slaby <jslaby@suse.cz>
TTY: do not reset master's packet mode
Paul Bolle <pebolle@tiscali.nl>
tty: serial: fix typo "ARCH_S5P6450"
Wang YanQing <udknight@gmail.com>
serial: 8250_pci: add support for another kind of NetMos Technology PCI 9835 Multi-I/O Controller
Lars-Peter Clausen <lars@metafoo.de>
ext3: Fix format string issues
Kees Cook <keescook@chromium.org>
signal: always clear sa_restorer on execve
Malcolm Priestley <tvboxspy@gmail.com>
staging: vt6656: Fix oops on resume from suspend.
Alan Stern <stern@rowland.harvard.edu>
USB: EHCI: don't check DMA values in QH overlays
Bjørn Mork <bjorn@mork.no>
USB: storage: fix Huawei mode switching regression
Steve Conklin <sconklin@canonical.com>
usb: serial: Add Rigblaster Advantage to device table
Christian Schmiedl <christian.schmiedl@gemalto.com>
USB: added support for Cinterion's products AH6 and PLS8
Matwey V. Kornilov <matwey@sai.msu.ru>
usb: cp210x new Vendor/Device IDs
Oliver Neukum <oneukum@suse.de>
USB: cdc-wdm: fix buffer overflow
Bjørn Mork <bjorn@mork.no>
USB: option: add Huawei E5331
Amit Shah <amit.shah@redhat.com>
virtio: rng: disallow multiple device registrations, fixes crashes
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
xen/pciback: Don't disable a PCI device that is already disabled.
Dan Williams <dcbw@redhat.com>
qcaux: add Franklin U600
-------------
Diffstat:
Makefile | 4 +-
arch/powerpc/kernel/cputable.c | 2 +-
arch/powerpc/mm/hash_utils_64.c | 2 +
arch/s390/include/asm/tlbflush.h | 2 -
arch/s390/kernel/entry.S | 3 +-
arch/s390/kernel/entry64.S | 5 +-
arch/x86/kernel/cpu/perf_event_intel_ds.c | 10 +
arch/x86/power/cpu.c | 2 +
drivers/block/loop.c | 24 ++-
drivers/char/hw_random/virtio-rng.c | 13 +-
drivers/gpu/drm/i915/i915_gem.c | 5 +
drivers/gpu/drm/i915/intel_display.c | 2 +-
drivers/hwmon/lineage-pem.c | 2 +
drivers/hwmon/pmbus/ltc2978.c | 14 +-
drivers/hwmon/sht15.c | 2 +-
drivers/net/macvlan.c | 1 +
drivers/net/tun.c | 2 +
drivers/staging/vt6656/main_usb.c | 4 -
drivers/tty/pty.c | 1 -
drivers/tty/serial/8250/8250_pci.c | 4 +
drivers/tty/serial/Kconfig | 2 +-
drivers/usb/class/cdc-wdm.c | 23 ++-
drivers/usb/host/ehci-q.c | 18 +-
drivers/usb/serial/cp210x.c | 20 ++
drivers/usb/serial/option.c | 5 +
drivers/usb/serial/qcaux.c | 1 +
drivers/usb/storage/initializers.c | 76 +------
drivers/usb/storage/initializers.h | 4 +-
drivers/usb/storage/unusual_devs.h | 329 +++++++++++++++++++++++++++++-
drivers/video/atmel_lcdfb.c | 22 +-
drivers/w1/w1.c | 3 +-
drivers/xen/xen-pciback/pciback_ops.c | 3 +-
fs/block_dev.c | 4 +-
fs/btrfs/volumes.c | 6 +
fs/ext3/super.c | 4 +-
include/linux/perf_event.h | 6 +
include/video/atmel_lcdc.h | 1 +
kernel/signal.c | 3 +
net/core/dev.c | 1 +
net/core/rtnetlink.c | 1 +
net/dcb/dcbnl.c | 7 +
net/ieee802154/6lowpan.h | 2 +-
net/ipv4/tcp_input.c | 6 +-
net/ipv6/ip6_input.c | 3 +-
net/ipv6/route.c | 3 +-
net/l2tp/l2tp_ppp.c | 1 +
net/netlabel/netlabel_unlabeled.c | 27 +--
net/rds/message.c | 3 +
security/selinux/xfrm.c | 2 +-
sound/core/seq/seq_timer.c | 8 +-
50 files changed, 541 insertions(+), 157 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread* [ 12/48] signal: always clear sa_restorer on execve 2013-03-18 21:08 [ 00/48] 3.4.37-stable review Greg Kroah-Hartman @ 2013-03-18 21:08 ` Greg Kroah-Hartman 0 siblings, 0 replies; 5+ messages in thread From: Greg Kroah-Hartman @ 2013-03-18 21:08 UTC (permalink / raw) To: linux-kernel Cc: Greg Kroah-Hartman, stable, Kees Cook, Emese Revfy, PaX Team, Al Viro, Oleg Nesterov, Eric W. Biederman, Serge Hallyn, Julien Tinnes, Andrew Morton, Linus Torvalds 3.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Kees Cook <keescook@chromium.org> commit 2ca39528c01a933f6689cd6505ce65bd6d68a530 upstream. When the new signal handlers are set up, the location of sa_restorer is not cleared, leaking a parent process's address space location to children. This allows for a potential bypass of the parent's ASLR by examining the sa_restorer value returned when calling sigaction(). Based on what should be considered "secret" about addresses, it only matters across the exec not the fork (since the VMAs haven't changed until the exec). But since exec sets SIG_DFL and keeps sa_restorer, this is where it should be fixed. Given the few uses of sa_restorer, a "set" function was not written since this would be the only use. Instead, we use __ARCH_HAS_SA_RESTORER, as already done in other places. Example of the leak before applying this patch: $ cat /proc/$$/maps ... 7fb9f3083000-7fb9f3238000 r-xp 00000000 fd:01 404469 .../libc-2.15.so ... $ ./leak ... 7f278bc74000-7f278be29000 r-xp 00000000 fd:01 404469 .../libc-2.15.so ... 1 0 (nil) 0x7fb9f30b94a0 2 4000000 (nil) 0x7f278bcaa4a0 3 4000000 (nil) 0x7f278bcaa4a0 4 0 (nil) 0x7fb9f30b94a0 ... [akpm@linux-foundation.org: use SA_RESTORER for backportability] Signed-off-by: Kees Cook <keescook@chromium.org> Reported-by: Emese Revfy <re.emese@gmail.com> Cc: Emese Revfy <re.emese@gmail.com> Cc: PaX Team <pageexec@freemail.hu> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Oleg Nesterov <oleg@redhat.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Serge Hallyn <serge.hallyn@canonical.com> Cc: Julien Tinnes <jln@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- kernel/signal.c | 3 +++ 1 file changed, 3 insertions(+) --- a/kernel/signal.c +++ b/kernel/signal.c @@ -482,6 +482,9 @@ flush_signal_handlers(struct task_struct if (force_default || ka->sa.sa_handler != SIG_IGN) ka->sa.sa_handler = SIG_DFL; ka->sa.sa_flags = 0; +#ifdef SA_RESTORER + ka->sa.sa_restorer = NULL; +#endif sigemptyset(&ka->sa.sa_mask); ka++; } ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-03-26 14:04 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <514A07DC.60708@dd-wrt.com>
2013-03-20 20:43 ` [ 12/48] signal: always clear sa_restorer on execve Sebastian Gottschall (DD-WRT)
2013-03-21 1:41 ` Ben Hutchings
2013-03-26 4:45 ` signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer Ben Hutchings
2013-03-26 14:04 ` Luis Henriques
2013-03-18 21:08 [ 00/48] 3.4.37-stable review Greg Kroah-Hartman
2013-03-18 21:08 ` [ 12/48] signal: always clear sa_restorer on execve Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).