btrfs: split delayed ref head initialization and addition
[sfrench/cifs-2.6.git] / fs / signalfd.c
index 76bf9cc620742c1b7cd1622ff1f859fb7b606d51..d2187a813376cab46f63c11bb1e1eb572bf07775 100644 (file)
@@ -256,8 +256,8 @@ static const struct file_operations signalfd_fops = {
        .llseek         = noop_llseek,
 };
 
-SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
-               size_t, sizemask, int, flags)
+static int do_signalfd4(int ufd, sigset_t __user *user_mask, size_t sizemask,
+                       int flags)
 {
        sigset_t sigmask;
        struct signalfd_ctx *ctx;
@@ -310,17 +310,22 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
        return ufd;
 }
 
+SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
+               size_t, sizemask, int, flags)
+{
+       return do_signalfd4(ufd, user_mask, sizemask, flags);
+}
+
 SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask,
                size_t, sizemask)
 {
-       return sys_signalfd4(ufd, user_mask, sizemask, 0);
+       return do_signalfd4(ufd, user_mask, sizemask, 0);
 }
 
 #ifdef CONFIG_COMPAT
-COMPAT_SYSCALL_DEFINE4(signalfd4, int, ufd,
-                    const compat_sigset_t __user *,sigmask,
-                    compat_size_t, sigsetsize,
-                    int, flags)
+static long do_compat_signalfd4(int ufd,
+                       const compat_sigset_t __user *sigmask,
+                       compat_size_t sigsetsize, int flags)
 {
        sigset_t tmp;
        sigset_t __user *ksigmask;
@@ -333,13 +338,21 @@ COMPAT_SYSCALL_DEFINE4(signalfd4, int, ufd,
        if (copy_to_user(ksigmask, &tmp, sizeof(sigset_t)))
                return -EFAULT;
 
-       return sys_signalfd4(ufd, ksigmask, sizeof(sigset_t), flags);
+       return do_signalfd4(ufd, ksigmask, sizeof(sigset_t), flags);
+}
+
+COMPAT_SYSCALL_DEFINE4(signalfd4, int, ufd,
+                    const compat_sigset_t __user *, sigmask,
+                    compat_size_t, sigsetsize,
+                    int, flags)
+{
+       return do_compat_signalfd4(ufd, sigmask, sigsetsize, flags);
 }
 
 COMPAT_SYSCALL_DEFINE3(signalfd, int, ufd,
                     const compat_sigset_t __user *,sigmask,
                     compat_size_t, sigsetsize)
 {
-       return compat_sys_signalfd4(ufd, sigmask, sigsetsize, 0);
+       return do_compat_signalfd4(ufd, sigmask, sigsetsize, 0);
 }
 #endif