diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-25 14:53:15 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-03 18:16:12 -0500 |
commit | bdcf03183cbf208923752bd26f6b9488c60ec1ca (patch) | |
tree | 2a77622be253557e1aa314dd324cda07096a31fe | |
parent | 742602243177f3d1d87dede110d278a0f656cf4d (diff) |
s390: switch to generic compat rt_sigpending()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/s390/Kconfig | 1 | ||||
-rw-r--r-- | arch/s390/kernel/compat_linux.c | 20 | ||||
-rw-r--r-- | arch/s390/kernel/compat_linux.h | 1 | ||||
-rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 2 |
4 files changed, 2 insertions, 22 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 26e584eda6d6..f68a030411b5 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -142,6 +142,7 @@ config S390 | |||
142 | select CLONE_BACKWARDS2 | 142 | select CLONE_BACKWARDS2 |
143 | select GENERIC_SIGALTSTACK | 143 | select GENERIC_SIGALTSTACK |
144 | select GENERIC_COMPAT_RT_SIGPROCMASK | 144 | select GENERIC_COMPAT_RT_SIGPROCMASK |
145 | select GENERIC_COMPAT_RT_SIGPENDING | ||
145 | 146 | ||
146 | config SCHED_OMIT_FRAME_POINTER | 147 | config SCHED_OMIT_FRAME_POINTER |
147 | def_bool y | 148 | def_bool y |
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index cfaba34bef3a..877b18be0f4a 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -368,26 +368,6 @@ asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid, | |||
368 | return ret; | 368 | return ret; |
369 | } | 369 | } |
370 | 370 | ||
371 | asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, | ||
372 | size_t sigsetsize) | ||
373 | { | ||
374 | sigset_t s; | ||
375 | compat_sigset_t s32; | ||
376 | int ret; | ||
377 | mm_segment_t old_fs = get_fs(); | ||
378 | |||
379 | set_fs (KERNEL_DS); | ||
380 | ret = sys_rt_sigpending((sigset_t __force __user *) &s, sigsetsize); | ||
381 | set_fs (old_fs); | ||
382 | if (!ret) { | ||
383 | s32.sig[1] = (s.sig[0] >> 32); | ||
384 | s32.sig[0] = s.sig[0]; | ||
385 | if (copy_to_user (set, &s32, sizeof(compat_sigset_t))) | ||
386 | return -EFAULT; | ||
387 | } | ||
388 | return ret; | ||
389 | } | ||
390 | |||
391 | asmlinkage long | 371 | asmlinkage long |
392 | sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo) | 372 | sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo) |
393 | { | 373 | { |
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h index 1b5c451381e0..385567661ced 100644 --- a/arch/s390/kernel/compat_linux.h +++ b/arch/s390/kernel/compat_linux.h | |||
@@ -115,7 +115,6 @@ long sys32_truncate64(const char __user * path, unsigned long high, | |||
115 | long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); | 115 | long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); |
116 | long sys32_sched_rr_get_interval(compat_pid_t pid, | 116 | long sys32_sched_rr_get_interval(compat_pid_t pid, |
117 | struct compat_timespec __user *interval); | 117 | struct compat_timespec __user *interval); |
118 | long sys32_rt_sigpending(compat_sigset_t __user *set, size_t sigsetsize); | ||
119 | long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo); | 118 | long sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo); |
120 | long sys32_init_module(void __user *umod, unsigned long len, | 119 | long sys32_init_module(void __user *umod, unsigned long len, |
121 | const char __user *uargs); | 120 | const char __user *uargs); |
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 9bea6f200500..2b813b3edbd1 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -703,7 +703,7 @@ ENTRY(sys32_rt_sigprocmask_wrapper) | |||
703 | ENTRY(sys32_rt_sigpending_wrapper) | 703 | ENTRY(sys32_rt_sigpending_wrapper) |
704 | llgtr %r2,%r2 # sigset_emu31 * | 704 | llgtr %r2,%r2 # sigset_emu31 * |
705 | llgfr %r3,%r3 # size_t | 705 | llgfr %r3,%r3 # size_t |
706 | jg sys32_rt_sigpending # branch to system call | 706 | jg compat_sys_rt_sigpending # branch to system call |
707 | 707 | ||
708 | ENTRY(compat_sys_rt_sigtimedwait_wrapper) | 708 | ENTRY(compat_sys_rt_sigtimedwait_wrapper) |
709 | llgtr %r2,%r2 # const sigset_emu31_t * | 709 | llgtr %r2,%r2 # const sigset_emu31_t * |