aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-12-25 16:09:20 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-03 18:16:26 -0500
commit15ce1f7154c80693cec4f8a5309e8c8a06fb2541 (patch)
tree16d9bf114517d15fbb5854bc26e0bca502139aa4 /arch
parent7b83d1a297ac1afda2bb9a9979ca73173148623f (diff)
x86,um: switch to generic old sigsuspend()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/um/kernel/signal.c10
-rw-r--r--arch/x86/Kconfig1
-rw-r--r--arch/x86/ia32/ia32_signal.c7
-rw-r--r--arch/x86/include/asm/sys_ia32.h1
-rw-r--r--arch/x86/include/asm/syscalls.h1
-rw-r--r--arch/x86/kernel/signal.c11
-rw-r--r--arch/x86/syscalls/syscall_32.tbl2
-rw-r--r--arch/x86/um/Kconfig1
8 files changed, 3 insertions, 31 deletions
diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c
index 48ccf718e290..3e831b3fd07b 100644
--- a/arch/um/kernel/signal.c
+++ b/arch/um/kernel/signal.c
@@ -122,13 +122,3 @@ int do_signal(void)
122{ 122{
123 return kern_do_signal(&current->thread.regs); 123 return kern_do_signal(&current->thread.regs);
124} 124}
125
126/*
127 * Atomically swap in the new signal mask, and wait for a signal.
128 */
129long sys_sigsuspend(int history0, int history1, old_sigset_t mask)
130{
131 sigset_t blocked;
132 siginitset(&blocked, mask);
133 return sigsuspend(&blocked);
134}
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 9f031118f856..5bda2d7f1b69 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -116,6 +116,7 @@ config X86
116 select GENERIC_SIGALTSTACK 116 select GENERIC_SIGALTSTACK
117 select GENERIC_COMPAT_RT_SIGQUEUEINFO 117 select GENERIC_COMPAT_RT_SIGQUEUEINFO
118 select GENERIC_COMPAT_RT_SIGPENDING 118 select GENERIC_COMPAT_RT_SIGPENDING
119 select OLD_SIGSUSPEND3 if X86_32 || IA32_EMULATION
119 120
120config INSTRUCTION_DECODER 121config INSTRUCTION_DECODER
121 def_bool y 122 def_bool y
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index 15fdb3f57d8c..b0460cd7de5a 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -129,13 +129,6 @@ int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from)
129 return err; 129 return err;
130} 130}
131 131
132asmlinkage long sys32_sigsuspend(int history0, int history1, old_sigset_t mask)
133{
134 sigset_t blocked;
135 siginitset(&blocked, mask);
136 return sigsuspend(&blocked);
137}
138
139/* 132/*
140 * Do a signal return; undo the signal stack. 133 * Do a signal return; undo the signal stack.
141 */ 134 */
diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h
index e3a893167387..d4c3837f9297 100644
--- a/arch/x86/include/asm/sys_ia32.h
+++ b/arch/x86/include/asm/sys_ia32.h
@@ -66,7 +66,6 @@ asmlinkage long sys32_fallocate(int, int, unsigned,
66 unsigned, unsigned, unsigned); 66 unsigned, unsigned, unsigned);
67 67
68/* ia32/ia32_signal.c */ 68/* ia32/ia32_signal.c */
69asmlinkage long sys32_sigsuspend(int, int, old_sigset_t);
70asmlinkage long sys32_sigreturn(void); 69asmlinkage long sys32_sigreturn(void);
71asmlinkage long sys32_rt_sigreturn(void); 70asmlinkage long sys32_rt_sigreturn(void);
72 71
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
index f755423a5d02..7ed7dec7fb0e 100644
--- a/arch/x86/include/asm/syscalls.h
+++ b/arch/x86/include/asm/syscalls.h
@@ -34,7 +34,6 @@ asmlinkage int sys_get_thread_area(struct user_desc __user *);
34#ifdef CONFIG_X86_32 34#ifdef CONFIG_X86_32
35 35
36/* kernel/signal.c */ 36/* kernel/signal.c */
37asmlinkage int sys_sigsuspend(int, int, old_sigset_t);
38asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, 37asmlinkage int sys_sigaction(int, const struct old_sigaction __user *,
39 struct old_sigaction __user *); 38 struct old_sigaction __user *);
40unsigned long sys_sigreturn(void); 39unsigned long sys_sigreturn(void);
diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
index 38ba7e56e161..057712901509 100644
--- a/arch/x86/kernel/signal.c
+++ b/arch/x86/kernel/signal.c
@@ -536,17 +536,6 @@ static int x32_setup_rt_frame(int sig, struct k_sigaction *ka,
536} 536}
537 537
538#ifdef CONFIG_X86_32 538#ifdef CONFIG_X86_32
539/*
540 * Atomically swap in the new signal mask, and wait for a signal.
541 */
542asmlinkage int
543sys_sigsuspend(int history0, int history1, old_sigset_t mask)
544{
545 sigset_t blocked;
546 siginitset(&blocked, mask);
547 return sigsuspend(&blocked);
548}
549
550asmlinkage int 539asmlinkage int
551sys_sigaction(int sig, const struct old_sigaction __user *act, 540sys_sigaction(int sig, const struct old_sigaction __user *act,
552 struct old_sigaction __user *oact) 541 struct old_sigaction __user *oact)
diff --git a/arch/x86/syscalls/syscall_32.tbl b/arch/x86/syscalls/syscall_32.tbl
index 9c707c4b4811..fae76a348c73 100644
--- a/arch/x86/syscalls/syscall_32.tbl
+++ b/arch/x86/syscalls/syscall_32.tbl
@@ -78,7 +78,7 @@
7869 i386 ssetmask sys_ssetmask 7869 i386 ssetmask sys_ssetmask
7970 i386 setreuid sys_setreuid16 7970 i386 setreuid sys_setreuid16
8071 i386 setregid sys_setregid16 8071 i386 setregid sys_setregid16
8172 i386 sigsuspend sys_sigsuspend sys32_sigsuspend 8172 i386 sigsuspend sys_sigsuspend sys_sigsuspend
8273 i386 sigpending sys_sigpending compat_sys_sigpending 8273 i386 sigpending sys_sigpending compat_sys_sigpending
8374 i386 sethostname sys_sethostname 8374 i386 sethostname sys_sethostname
8475 i386 setrlimit sys_setrlimit compat_sys_setrlimit 8475 i386 setrlimit sys_setrlimit compat_sys_setrlimit
diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig
index 53c90fd412d1..a3725824449e 100644
--- a/arch/x86/um/Kconfig
+++ b/arch/x86/um/Kconfig
@@ -25,6 +25,7 @@ config X86_32
25 select ARCH_WANT_IPC_PARSE_VERSION 25 select ARCH_WANT_IPC_PARSE_VERSION
26 select MODULES_USE_ELF_REL 26 select MODULES_USE_ELF_REL
27 select CLONE_BACKWARDS 27 select CLONE_BACKWARDS
28 select OLD_SIGSUSPEND3
28 29
29config X86_64 30config X86_64
30 def_bool 64BIT 31 def_bool 64BIT