projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[patch 4/5] vfs: reuse local variable in vfs_link()
[firefly-linux-kernel-4.4.55.git]
/
fs
/
eventfd.c
diff --git
a/fs/eventfd.c
b/fs/eventfd.c
index 343942deeec138b1925e7815d0ac819e41f1214e..08bf558d04080ffe0a3ced77a5660d4af4e1182f 100644
(file)
--- a/
fs/eventfd.c
+++ b/
fs/eventfd.c
@@
-198,11
+198,18
@@
struct file *eventfd_fget(int fd)
return file;
}
return file;
}
-asmlinkage long sys_eventfd
(unsigned int count
)
+asmlinkage long sys_eventfd
2(unsigned int count, int flags
)
{
int fd;
struct eventfd_ctx *ctx;
{
int fd;
struct eventfd_ctx *ctx;
+ /* 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);
if (!ctx)
return -ENOMEM;
ctx = kmalloc(sizeof(*ctx), GFP_KERNEL);
if (!ctx)
return -ENOMEM;
@@
-214,9
+221,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.
*/
* 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);
+ fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx,
+ flags & (O_CLOEXEC | O_NONBLOCK));
if (fd < 0)
kfree(ctx);
return fd;
}
if (fd < 0)
kfree(ctx);
return fd;
}
+asmlinkage long sys_eventfd(unsigned int count)
+{
+ return sys_eventfd2(count, 0);
+}
+