lkml.org 
[lkml]   [2014]   [Feb]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH for-next 4/4] epoll: epoll() syscall definition
Nathaniel Yazdani <n1ght.4nd.d4y@gmail.com> wrote:
> + * stores triggered eventpoll entries in the 'out' array. The input array is
> + * _not_ read-only, because the resulting event mask gets written back to each
> + * entry's ->ep_events field. When successful, this will be the same as before
> + * (plus EPOLLERR & EPOLLHUP). If ->ep_events gets cleared, then it is reasonable
> + * to infer that the entry's ->ep_fildes was a bad file descriptor.
> + */

> + if (!access_ok(VERIFY_WRITE, in, inc * sizeof(struct epoll)))
> + goto out;
> + for (i = 0; i < inc; ++i) {
> + int fd, io;
> + long long id;
> +
> + ret = -EFAULT;
> + if (__get_user(fd, &in[i].ep_fildes) ||
> + __get_user(io, &in[i].ep_events) ||
> + __get_user(id, &in[i].ep_ident))
> + goto out;
> +
> + ep_control(file->private_data, fd, &io, id, 0);
> + ret = -EFAULT;
> + if (__put_user(io, &in[i].ep_events))
> + goto out;

I don't think we should waste cycles writing to 'in' on success.


\
 
 \ /
  Last update: 2014-02-25 12:01    [W:0.232 / U:0.388 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site