]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/eventfd.c
flag parameters: eventfd
[karo-tx-linux.git] / fs / eventfd.c
index 6094265ca409aa9f11bac3cea8761ffbace98d64..bd420e6478add9dbe241816cc5dbb8b8045a5052 100644 (file)
@@ -198,11 +198,14 @@ struct file *eventfd_fget(int fd)
        return file;
 }
 
-asmlinkage long sys_eventfd(unsigned int count)
+asmlinkage long sys_eventfd2(unsigned int count, int flags)
 {
        int fd;
        struct eventfd_ctx *ctx;
 
+       if (flags & ~EFD_CLOEXEC)
+               return -EINVAL;
+
        ctx = kmalloc(sizeof(*ctx), GFP_KERNEL);
        if (!ctx)
                return -ENOMEM;
@@ -214,9 +217,15 @@ asmlinkage long sys_eventfd(unsigned int count)
         * When we call this, the initialization must be complete, since
         * anon_inode_getfd() will install the fd.
         */
-       fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx, 0);
+       fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx,
+                             flags & O_CLOEXEC);
        if (fd < 0)
                kfree(ctx);
        return fd;
 }
 
+asmlinkage long sys_eventfd(unsigned int count)
+{
+       return sys_eventfd2(count, 0);
+}
+