diff options
Diffstat (limited to 'fs/eventfd.c')
-rw-r--r-- | fs/eventfd.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/eventfd.c b/fs/eventfd.c index 35470d9b96e6..d6a88e7812f3 100644 --- a/fs/eventfd.c +++ b/fs/eventfd.c | |||
@@ -349,15 +349,12 @@ EXPORT_SYMBOL_GPL(eventfd_fget); | |||
349 | */ | 349 | */ |
350 | struct eventfd_ctx *eventfd_ctx_fdget(int fd) | 350 | struct eventfd_ctx *eventfd_ctx_fdget(int fd) |
351 | { | 351 | { |
352 | struct file *file; | ||
353 | struct eventfd_ctx *ctx; | 352 | struct eventfd_ctx *ctx; |
354 | 353 | struct fd f = fdget(fd); | |
355 | file = eventfd_fget(fd); | 354 | if (!f.file) |
356 | if (IS_ERR(file)) | 355 | return ERR_PTR(-EBADF); |
357 | return (struct eventfd_ctx *) file; | 356 | ctx = eventfd_ctx_fileget(f.file); |
358 | ctx = eventfd_ctx_get(file->private_data); | 357 | fdput(f); |
359 | fput(file); | ||
360 | |||
361 | return ctx; | 358 | return ctx; |
362 | } | 359 | } |
363 | EXPORT_SYMBOL_GPL(eventfd_ctx_fdget); | 360 | EXPORT_SYMBOL_GPL(eventfd_ctx_fdget); |