aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-11-25 23:12:10 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 15:09:18 -0500
commiteaca6eae3e0c41d41fcb9d1d70e00934988dff2e (patch)
treead1fc38c1a76d2eadccb0cd591151b09a270fc57 /arch
parent377840744bea59aacd524f496dc577463f94584b (diff)
sanitize rt_sigaction() situation a bit
Switch from __ARCH_WANT_SYS_RT_SIGACTION to opposite (!CONFIG_ODD_RT_SIGACTION); the only two architectures that need it are alpha and sparc. The reason for use of CONFIG_... instead of __ARCH_... is that it's needed only kernel-side and doing it that way avoids a mess with include order on many architectures. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/Kconfig5
-rw-r--r--arch/alpha/Kconfig1
-rw-r--r--arch/ia64/include/asm/unistd.h4
-rw-r--r--arch/powerpc/include/asm/syscalls.h3
-rw-r--r--arch/sparc/Kconfig1
-rw-r--r--arch/sparc/kernel/sys_sparc_32.c11
-rw-r--r--arch/x86/um/shared/sysdep/syscalls_32.h5
-rw-r--r--arch/xtensa/include/asm/syscall.h5
8 files changed, 12 insertions, 23 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index 7f8f281f2585..6e4c32a5a358 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -373,4 +373,9 @@ config CLONE_BACKWARDS2
373 help 373 help
374 Architecture has the first two arguments of clone(2) swapped. 374 Architecture has the first two arguments of clone(2) swapped.
375 375
376config ODD_RT_SIGACTION
377 bool
378 help
379 Architecture has unusual rt_sigaction(2) arguments
380
376source "kernel/gcov/Kconfig" 381source "kernel/gcov/Kconfig"
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 9d5904cc7712..8696c03a9d73 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -23,6 +23,7 @@ config ALPHA
23 select HAVE_MOD_ARCH_SPECIFIC 23 select HAVE_MOD_ARCH_SPECIFIC
24 select MODULES_USE_ELF_RELA 24 select MODULES_USE_ELF_RELA
25 select GENERIC_SIGALTSTACK 25 select GENERIC_SIGALTSTACK
26 select ODD_RT_SIGACTION
26 help 27 help
27 The Alpha is a 64-bit general-purpose processor designed and 28 The Alpha is a 64-bit general-purpose processor designed and
28 marketed by the Digital Equipment Corporation of blessed memory, 29 marketed by the Digital Equipment Corporation of blessed memory,
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index c3cc42a15af1..bfbb109458be 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -49,10 +49,6 @@ asmlinkage unsigned long sys_mmap2(
49struct pt_regs; 49struct pt_regs;
50struct sigaction; 50struct sigaction;
51asmlinkage long sys_ia64_pipe(void); 51asmlinkage long sys_ia64_pipe(void);
52asmlinkage long sys_rt_sigaction(int sig,
53 const struct sigaction __user *act,
54 struct sigaction __user *oact,
55 size_t sigsetsize);
56 52
57/* 53/*
58 * "Conditional" syscalls 54 * "Conditional" syscalls
diff --git a/arch/powerpc/include/asm/syscalls.h b/arch/powerpc/include/asm/syscalls.h
index b5308d3e6d39..5c51659e61d5 100644
--- a/arch/powerpc/include/asm/syscalls.h
+++ b/arch/powerpc/include/asm/syscalls.h
@@ -19,9 +19,6 @@ asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
19 unsigned long fd, unsigned long pgoff); 19 unsigned long fd, unsigned long pgoff);
20asmlinkage long sys_pipe(int __user *fildes); 20asmlinkage long sys_pipe(int __user *fildes);
21asmlinkage long sys_pipe2(int __user *fildes, int flags); 21asmlinkage long sys_pipe2(int __user *fildes, int flags);
22asmlinkage long sys_rt_sigaction(int sig,
23 const struct sigaction __user *act,
24 struct sigaction __user *oact, size_t sigsetsize);
25asmlinkage long ppc64_personality(unsigned long personality); 22asmlinkage long ppc64_personality(unsigned long personality);
26asmlinkage int ppc_rtas(struct rtas_args __user *uargs); 23asmlinkage int ppc_rtas(struct rtas_args __user *uargs);
27asmlinkage time_t sys64_time(time_t __user * tloc); 24asmlinkage time_t sys64_time(time_t __user * tloc);
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 9f2edb5c5551..89dde2f0653a 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -41,6 +41,7 @@ config SPARC
41 select GENERIC_STRNCPY_FROM_USER 41 select GENERIC_STRNCPY_FROM_USER
42 select GENERIC_STRNLEN_USER 42 select GENERIC_STRNLEN_USER
43 select MODULES_USE_ELF_RELA 43 select MODULES_USE_ELF_RELA
44 select ODD_RT_SIGACTION
44 45
45config SPARC32 46config SPARC32
46 def_bool !64BIT 47 def_bool !64BIT
diff --git a/arch/sparc/kernel/sys_sparc_32.c b/arch/sparc/kernel/sys_sparc_32.c
index 2da0bdcae52f..cdd2d7035930 100644
--- a/arch/sparc/kernel/sys_sparc_32.c
+++ b/arch/sparc/kernel/sys_sparc_32.c
@@ -197,12 +197,11 @@ sparc_sigaction (int sig, const struct old_sigaction __user *act,
197 return ret; 197 return ret;
198} 198}
199 199
200asmlinkage long 200SYSCALL_DEFINE5(rt_sigaction, int, sig,
201sys_rt_sigaction(int sig, 201 const struct sigaction __user *, act,
202 const struct sigaction __user *act, 202 struct sigaction __user *, oact,
203 struct sigaction __user *oact, 203 void __user *, restorer,
204 void __user *restorer, 204 size_t, sigsetsize)
205 size_t sigsetsize)
206{ 205{
207 struct k_sigaction new_ka, old_ka; 206 struct k_sigaction new_ka, old_ka;
208 int ret; 207 int ret;
diff --git a/arch/x86/um/shared/sysdep/syscalls_32.h b/arch/x86/um/shared/sysdep/syscalls_32.h
index 8436079be914..68fd2cf526fd 100644
--- a/arch/x86/um/shared/sysdep/syscalls_32.h
+++ b/arch/x86/um/shared/sysdep/syscalls_32.h
@@ -8,11 +8,6 @@
8 8
9typedef long syscall_handler_t(struct pt_regs); 9typedef long syscall_handler_t(struct pt_regs);
10 10
11/* Not declared on x86, incompatible declarations on x86_64, so these have
12 * to go here rather than in sys_call_table.c
13 */
14extern syscall_handler_t sys_rt_sigaction;
15
16extern syscall_handler_t *sys_call_table[]; 11extern syscall_handler_t *sys_call_table[];
17 12
18#define EXECUTE_SYSCALL(syscall, regs) \ 13#define EXECUTE_SYSCALL(syscall, regs) \
diff --git a/arch/xtensa/include/asm/syscall.h b/arch/xtensa/include/asm/syscall.h
index 8d5e47fad095..6cf7c6c07a84 100644
--- a/arch/xtensa/include/asm/syscall.h
+++ b/arch/xtensa/include/asm/syscall.h
@@ -9,15 +9,10 @@
9 */ 9 */
10 10
11struct pt_regs; 11struct pt_regs;
12struct sigaction;
13asmlinkage long xtensa_ptrace(long, long, long, long); 12asmlinkage long xtensa_ptrace(long, long, long, long);
14asmlinkage long xtensa_sigreturn(struct pt_regs*); 13asmlinkage long xtensa_sigreturn(struct pt_regs*);
15asmlinkage long xtensa_rt_sigreturn(struct pt_regs*); 14asmlinkage long xtensa_rt_sigreturn(struct pt_regs*);
16asmlinkage long xtensa_sigaltstack(struct pt_regs *regs); 15asmlinkage long xtensa_sigaltstack(struct pt_regs *regs);
17asmlinkage long sys_rt_sigaction(int,
18 const struct sigaction __user *,
19 struct sigaction __user *,
20 size_t);
21asmlinkage long xtensa_shmat(int, char __user *, int); 16asmlinkage long xtensa_shmat(int, char __user *, int);
22asmlinkage long xtensa_fadvise64_64(int, int, 17asmlinkage long xtensa_fadvise64_64(int, int,
23 unsigned long long, unsigned long long); 18 unsigned long long, unsigned long long);