X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=fs%2Fsignalfd.c;h=1dabe4ee02fe93931ae741344405bee1daca3cd0;hb=17bd55d037a02b04d9119511cfd1a4b985d20f63;hp=5441a4bca77247b02585ce0032ca1d47bb6ea494;hpb=5fb5e04926a54bc1c22bba7ca166840f4476196f;p=safe%2Fjmp%2Flinux-2.6 diff --git a/fs/signalfd.c b/fs/signalfd.c index 5441a4b..1dabe4e 100644 --- a/fs/signalfd.c +++ b/fs/signalfd.c @@ -205,12 +205,16 @@ static const struct file_operations signalfd_fops = { .read = signalfd_read, }; -asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask, - size_t sizemask, int flags) +SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, + size_t, sizemask, int, flags) { sigset_t sigmask; struct signalfd_ctx *ctx; + /* Check the SFD_* constants for consistency. */ + BUILD_BUG_ON(SFD_CLOEXEC != O_CLOEXEC); + BUILD_BUG_ON(SFD_NONBLOCK != O_NONBLOCK); + if (flags & ~(SFD_CLOEXEC | SFD_NONBLOCK)) return -EINVAL; @@ -232,7 +236,7 @@ asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask, * anon_inode_getfd() will install the fd. */ ufd = anon_inode_getfd("[signalfd]", &signalfd_fops, ctx, - flags & (O_CLOEXEC | O_NONBLOCK)); + O_RDWR | (flags & (O_CLOEXEC | O_NONBLOCK))); if (ufd < 0) kfree(ctx); } else { @@ -255,8 +259,8 @@ asmlinkage long sys_signalfd4(int ufd, sigset_t __user *user_mask, return ufd; } -asmlinkage long sys_signalfd(int ufd, sigset_t __user *user_mask, - size_t sizemask) +SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask, + size_t, sizemask) { return sys_signalfd4(ufd, user_mask, sizemask, 0); }