Commit 5a3233e3 authored by Pranav Vashi's avatar Pranav Vashi Committed by hellsgod
Browse files

epoll: switch simple cases of fget_light to fdget

Signed-off-by: default avatarPranav Vashi <neobuddy89@gmail.com>
parent eb6a12c0
...@@ -1831,8 +1831,8 @@ error_return: ...@@ -1831,8 +1831,8 @@ error_return:
SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events, SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events,
int, maxevents, int, timeout) int, maxevents, int, timeout)
{ {
int error, fput_needed; int error;
struct file *file; struct fd f;
struct eventpoll *ep; struct eventpoll *ep;
/* The maximum number of event must be greater than zero */ /* The maximum number of event must be greater than zero */
...@@ -1840,38 +1840,33 @@ SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events, ...@@ -1840,38 +1840,33 @@ SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events,
return -EINVAL; return -EINVAL;
/* Verify that the area passed by the user is writeable */ /* Verify that the area passed by the user is writeable */
if (!access_ok(VERIFY_WRITE, events, maxevents * sizeof(struct epoll_event))) { if (!access_ok(VERIFY_WRITE, events, maxevents * sizeof(struct epoll_event)))
error = -EFAULT; return -EFAULT;
goto error_return;
}
/* Get the "struct file *" for the eventpoll file */ /* Get the "struct file *" for the eventpoll file */
error = -EBADF; f = fdget(epfd);
file = fget_light(epfd, &fput_needed); if (!f.file)
if (!file) return -EBADF;
goto error_return;
/* /*
* We have to check that the file structure underneath the fd * We have to check that the file structure underneath the fd
* the user passed to us _is_ an eventpoll file. * the user passed to us _is_ an eventpoll file.
*/ */
error = -EINVAL; error = -EINVAL;
if (!is_file_epoll(file)) if (!is_file_epoll(f.file))
goto error_fput; goto error_fput;
/* /*
* At this point it is safe to assume that the "private_data" contains * At this point it is safe to assume that the "private_data" contains
* our own data structure. * our own data structure.
*/ */
ep = file->private_data; ep = f.file->private_data;
/* Time to fish for events ... */ /* Time to fish for events ... */
error = ep_poll(ep, events, maxevents, timeout); error = ep_poll(ep, events, maxevents, timeout);
error_fput: error_fput:
fput_light(file, fput_needed); fdput(f);
error_return:
return error; return error;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment