x86: switch to generic compat rt_sigqueueinfo()
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 25 Dec 2012 20:26:55 +0000 (15:26 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Feb 2013 23:16:25 +0000 (18:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/x86/Kconfig
arch/x86/ia32/sys_ia32.c
arch/x86/include/asm/sys_ia32.h
arch/x86/syscalls/syscall_32.tbl
arch/x86/syscalls/syscall_64.tbl

index 38018ecc74f690026aeff4cc2dde974fb6212ae3..9f031118f856d4eb49cdac1b3c0df3988551809e 100644 (file)
@@ -114,6 +114,7 @@ config X86
        select MODULES_USE_ELF_RELA if X86_64
        select CLONE_BACKWARDS if X86_32
        select GENERIC_SIGALTSTACK
+       select GENERIC_COMPAT_RT_SIGQUEUEINFO
        select GENERIC_COMPAT_RT_SIGPENDING
 
 config INSTRUCTION_DECODER
index b417fc1c7690f1132999aa7109502d804d9f47f0..0306fdc97260c41a62f816ab6beb87b3e46a7400 100644 (file)
@@ -310,21 +310,6 @@ asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid,
        return ret;
 }
 
-asmlinkage long sys32_rt_sigqueueinfo(int pid, int sig,
-                                     compat_siginfo_t __user *uinfo)
-{
-       siginfo_t info;
-       int ret;
-       mm_segment_t old_fs = get_fs();
-
-       if (copy_siginfo_from_user32(&info, uinfo))
-               return -EFAULT;
-       set_fs(KERNEL_DS);
-       ret = sys_rt_sigqueueinfo(pid, sig, (siginfo_t __user *)&info);
-       set_fs(old_fs);
-       return ret;
-}
-
 /* warning: next two assume little endian */
 asmlinkage long sys32_pread(unsigned int fd, char __user *ubuf, u32 count,
                            u32 poslo, u32 poshi)
index ff429b02c25644c928c910c7299608ad352d06cb..e3a893167387a380724bcd700552a49a4aaa26bc 100644 (file)
@@ -45,7 +45,6 @@ asmlinkage long sys32_sysfs(int, u32, u32);
 
 asmlinkage long sys32_sched_rr_get_interval(compat_pid_t,
                                            struct compat_timespec __user *);
-asmlinkage long sys32_rt_sigqueueinfo(int, int, compat_siginfo_t __user *);
 
 asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32);
 asmlinkage long sys32_pwrite(unsigned int, const char __user *, u32, u32, u32);
index 5a55e84f4d04b7c9820327fed24fb4779c582fcb..9c707c4b48114ef393b83d623604b2d9e7410f38 100644 (file)
 175    i386    rt_sigprocmask          sys_rt_sigprocmask
 176    i386    rt_sigpending           sys_rt_sigpending               compat_sys_rt_sigpending
 177    i386    rt_sigtimedwait         sys_rt_sigtimedwait             compat_sys_rt_sigtimedwait
-178    i386    rt_sigqueueinfo         sys_rt_sigqueueinfo             sys32_rt_sigqueueinfo
+178    i386    rt_sigqueueinfo         sys_rt_sigqueueinfo             compat_sys_rt_sigqueueinfo
 179    i386    rt_sigsuspend           sys_rt_sigsuspend
 180    i386    pread64                 sys_pread64                     sys32_pread
 181    i386    pwrite64                sys_pwrite64                    sys32_pwrite
index dbde26d7d528cfc1d5894e98b5c9c1cf1b96cf7b..6ceaa636e808605aa85c2a7d8becdb4aad141f89 100644 (file)
 521    x32     ptrace                  compat_sys_ptrace
 522    x32     rt_sigpending           compat_sys_rt_sigpending
 523    x32     rt_sigtimedwait         compat_sys_rt_sigtimedwait
-524    x32     rt_sigqueueinfo         sys32_rt_sigqueueinfo
+524    x32     rt_sigqueueinfo         compat_sys_rt_sigqueueinfo
 525    x32     sigaltstack             compat_sys_sigaltstack
 526    x32     timer_create            compat_sys_timer_create
 527    x32     mq_notify               compat_sys_mq_notify