diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-25 16:09:20 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:26 -0500 |
commit | 15ce1f7154c80693cec4f8a5309e8c8a06fb2541 (patch) | |
tree | 16d9bf114517d15fbb5854bc26e0bca502139aa4 /arch/x86 | |
parent | 7b83d1a297ac1afda2bb9a9979ca73173148623f (diff) |
x86,um: switch to generic old sigsuspend()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86/ia32/ia32_signal.c | 7 | ||||
-rw-r--r-- | arch/x86/include/asm/sys_ia32.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/syscalls.h | 1 | ||||
-rw-r--r-- | arch/x86/kernel/signal.c | 11 | ||||
-rw-r--r-- | arch/x86/syscalls/syscall_32.tbl | 2 | ||||
-rw-r--r-- | arch/x86/um/Kconfig | 1 |
7 files changed, 3 insertions, 21 deletions
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 | ||
120 | config INSTRUCTION_DECODER | 121 | config 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 | ||
132 | asmlinkage 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 */ |
69 | asmlinkage long sys32_sigsuspend(int, int, old_sigset_t); | ||
70 | asmlinkage long sys32_sigreturn(void); | 69 | asmlinkage long sys32_sigreturn(void); |
71 | asmlinkage long sys32_rt_sigreturn(void); | 70 | asmlinkage 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 */ |
37 | asmlinkage int sys_sigsuspend(int, int, old_sigset_t); | ||
38 | asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, | 37 | asmlinkage int sys_sigaction(int, const struct old_sigaction __user *, |
39 | struct old_sigaction __user *); | 38 | struct old_sigaction __user *); |
40 | unsigned long sys_sigreturn(void); | 39 | unsigned 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 | */ | ||
542 | asmlinkage int | ||
543 | sys_sigsuspend(int history0, int history1, old_sigset_t mask) | ||
544 | { | ||
545 | sigset_t blocked; | ||
546 | siginitset(&blocked, mask); | ||
547 | return sigsuspend(&blocked); | ||
548 | } | ||
549 | |||
550 | asmlinkage int | 539 | asmlinkage int |
551 | sys_sigaction(int sig, const struct old_sigaction __user *act, | 540 | sys_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 @@ | |||
78 | 69 i386 ssetmask sys_ssetmask | 78 | 69 i386 ssetmask sys_ssetmask |
79 | 70 i386 setreuid sys_setreuid16 | 79 | 70 i386 setreuid sys_setreuid16 |
80 | 71 i386 setregid sys_setregid16 | 80 | 71 i386 setregid sys_setregid16 |
81 | 72 i386 sigsuspend sys_sigsuspend sys32_sigsuspend | 81 | 72 i386 sigsuspend sys_sigsuspend sys_sigsuspend |
82 | 73 i386 sigpending sys_sigpending compat_sys_sigpending | 82 | 73 i386 sigpending sys_sigpending compat_sys_sigpending |
83 | 74 i386 sethostname sys_sethostname | 83 | 74 i386 sethostname sys_sethostname |
84 | 75 i386 setrlimit sys_setrlimit compat_sys_setrlimit | 84 | 75 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 | ||
29 | config X86_64 | 30 | config X86_64 |
30 | def_bool 64BIT | 31 | def_bool 64BIT |