diff options
| -rw-r--r-- | fs/eventfd.c | 4 | ||||
| -rw-r--r-- | include/linux/eventfd.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/fs/eventfd.c b/fs/eventfd.c index bd420e6478ad..3ed4466177a7 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c | |||
| @@ -203,7 +203,7 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags) | |||
| 203 | int fd; | 203 | int fd; |
| 204 | struct eventfd_ctx *ctx; | 204 | struct eventfd_ctx *ctx; |
| 205 | 205 | ||
| 206 | if (flags & ~EFD_CLOEXEC) | 206 | if (flags & ~(EFD_CLOEXEC | EFD_NONBLOCK)) |
| 207 | return -EINVAL; | 207 | return -EINVAL; |
| 208 | 208 | ||
| 209 | ctx = kmalloc(sizeof(*ctx), GFP_KERNEL); | 209 | ctx = kmalloc(sizeof(*ctx), GFP_KERNEL); |
| @@ -218,7 +218,7 @@ asmlinkage long sys_eventfd2(unsigned int count, int flags) | |||
| 218 | * anon_inode_getfd() will install the fd. | 218 | * anon_inode_getfd() will install the fd. |
| 219 | */ | 219 | */ |
| 220 | fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx, | 220 | fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx, |
| 221 | flags & O_CLOEXEC); | 221 | flags & (O_CLOEXEC | O_NONBLOCK)); |
| 222 | if (fd < 0) | 222 | if (fd < 0) |
| 223 | kfree(ctx); | 223 | kfree(ctx); |
| 224 | return fd; | 224 | return fd; |
diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h index a6c0eaedb1b0..a667637b54e3 100644 --- a/include/linux/eventfd.h +++ b/include/linux/eventfd.h | |||
| @@ -10,11 +10,12 @@ | |||
| 10 | 10 | ||
| 11 | #ifdef CONFIG_EVENTFD | 11 | #ifdef CONFIG_EVENTFD |
| 12 | 12 | ||
| 13 | /* For O_CLOEXEC */ | 13 | /* For O_CLOEXEC and O_NONBLOCK */ |
| 14 | #include <linux/fcntl.h> | 14 | #include <linux/fcntl.h> |
| 15 | 15 | ||
| 16 | /* Flags for eventfd2. */ | 16 | /* Flags for eventfd2. */ |
| 17 | #define EFD_CLOEXEC O_CLOEXEC | 17 | #define EFD_CLOEXEC O_CLOEXEC |
| 18 | #define EFD_NONBLOCK O_NONBLOCK | ||
| 18 | 19 | ||
| 19 | struct file *eventfd_fget(int fd); | 20 | struct file *eventfd_fget(int fd); |
| 20 | int eventfd_signal(struct file *file, int n); | 21 | int eventfd_signal(struct file *file, int n); |
