149 lines
4.2 KiB
Diff
149 lines
4.2 KiB
Diff
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;
|