signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer
authorBen Hutchings <ben@decadent.org.uk>
Mon, 26 Nov 2012 03:24:19 +0000 (22:24 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 27 Mar 2013 02:41:25 +0000 (02:41 +0000)
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>
13 files changed:
arch/arm/include/asm/signal.h
arch/avr32/include/asm/signal.h
arch/cris/include/asm/signal.h
arch/h8300/include/asm/signal.h
arch/m32r/include/asm/signal.h
arch/m68k/include/asm/signal.h
arch/mn10300/include/asm/signal.h
arch/powerpc/include/asm/signal.h
arch/s390/include/asm/signal.h
arch/sparc/include/asm/signal.h
arch/x86/include/asm/signal.h
arch/xtensa/include/asm/signal.h
include/asm-generic/signal.h

index 43ba0fb..559ee24 100644 (file)
@@ -127,6 +127,7 @@ struct sigaction {
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index 8790dfc..e6952a0 100644 (file)
@@ -128,6 +128,7 @@ struct sigaction {
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index ea6af9a..057fea2 100644 (file)
@@ -122,6 +122,7 @@ struct sigaction {
        void (*sa_restorer)(void);
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        void (*sa_restorer)(void);
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index fd8b66e..8695707 100644 (file)
@@ -121,6 +121,7 @@ struct sigaction {
        void (*sa_restorer)(void);
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        void (*sa_restorer)(void);
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index b2eeb0d..802d561 100644 (file)
@@ -123,6 +123,7 @@ struct sigaction {
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index 93fe83e..a20ae63 100644 (file)
@@ -119,6 +119,7 @@ struct sigaction {
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index 1865d72..eecaa76 100644 (file)
@@ -131,6 +131,7 @@ struct sigaction {
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index 3eb13be..ec63a0a 100644 (file)
@@ -109,6 +109,7 @@ struct sigaction {
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        __sigrestore_t sa_restorer;
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index cdf5cb2..c872626 100644 (file)
@@ -131,6 +131,7 @@ struct sigaction {
         void (*sa_restorer)(void);
         sigset_t sa_mask;               /* mask last for extensibility */
 };
         void (*sa_restorer)(void);
         sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
         struct sigaction sa;
 
 struct k_sigaction {
         struct sigaction sa;
index e49b828..4929431 100644 (file)
@@ -191,6 +191,7 @@ struct __old_sigaction {
        unsigned long           sa_flags;
        void                    (*sa_restorer)(void);  /* not used by Linux/SPARC yet */
 };
        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;
 
 typedef struct sigaltstack {
        void                    __user *ss_sp;
index 598457c..6cbc795 100644 (file)
@@ -125,6 +125,8 @@ typedef unsigned long sigset_t;
 extern void do_notify_resume(struct pt_regs *, void *, __u32);
 # endif /* __KERNEL__ */
 
 extern void do_notify_resume(struct pt_regs *, void *, __u32);
 # endif /* __KERNEL__ */
 
+#define __ARCH_HAS_SA_RESTORER
+
 #ifdef __i386__
 # ifdef __KERNEL__
 struct old_sigaction {
 #ifdef __i386__
 # ifdef __KERNEL__
 struct old_sigaction {
index 633ba73..75edf8a 100644 (file)
@@ -133,6 +133,7 @@ struct sigaction {
        void (*sa_restorer)(void);
        sigset_t sa_mask;               /* mask last for extensibility */
 };
        void (*sa_restorer)(void);
        sigset_t sa_mask;               /* mask last for extensibility */
 };
+#define __ARCH_HAS_SA_RESTORER
 
 struct k_sigaction {
        struct sigaction sa;
 
 struct k_sigaction {
        struct sigaction sa;
index 555c0ae..743f7a5 100644 (file)
@@ -99,6 +99,10 @@ typedef unsigned long old_sigset_t;
 
 #include <asm-generic/signal-defs.h>
 
 
 #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;
 struct sigaction {
        __sighandler_t sa_handler;
        unsigned long sa_flags;