X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=fs%2Feventfd.c;h=08bf558d04080ffe0a3ced77a5660d4af4e1182f;hb=30a2f3c60a84092c8084dfe788b710f8d0768cd4;hp=bd420e6478add9dbe241816cc5dbb8b8045a5052;hpb=b087498eb5605673b0f260a7620d91818cd72304;p=linux-2.6 diff --git a/fs/eventfd.c b/fs/eventfd.c index bd420e6478..08bf558d04 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c @@ -203,7 +203,11 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags) int fd; struct eventfd_ctx *ctx; - if (flags & ~EFD_CLOEXEC) + /* Check the EFD_* constants for consistency. */ + BUILD_BUG_ON(EFD_CLOEXEC != O_CLOEXEC); + BUILD_BUG_ON(EFD_NONBLOCK != O_NONBLOCK); + + if (flags & ~(EFD_CLOEXEC | EFD_NONBLOCK)) return -EINVAL; ctx = kmalloc(sizeof(*ctx), GFP_KERNEL); @@ -218,7 +222,7 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags) * anon_inode_getfd() will install the fd. */ fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx, - flags & O_CLOEXEC); + flags & (O_CLOEXEC | O_NONBLOCK)); if (fd < 0) kfree(ctx); return fd;