Messages in this thread | | | From | Eric Dumazet <> | Subject | Re: [take3 1/4] kevent: Core files. | Date | Thu, 3 Aug 2006 16:40:34 +0200 |
| |
On Thursday 03 August 2006 11:46, Evgeniy Polyakov wrote: > Core files. > > This patch includes core kevent files: > - userspace controlling > - kernelspace interfaces > - initialization > - notification state machines >
> +static int kevent_user_wait(struct file *file, struct kevent_user *u, > + unsigned int min_nr, unsigned int max_nr, unsigned int timeout, > + void __user *buf) > +{ >
> + mutex_lock(&u->ctl_mutex); > + while (num < max_nr && ((k = kqueue_dequeue_ready(u)) != NULL)) { > + if (copy_to_user(buf + num*sizeof(struct ukevent), > + &k->event, sizeof(struct ukevent))) { > + cerr = -EINVAL; > + break; > + }
It seems quite wrong to hold ctl_mutex while doing a copy_to_user() (of possibly a large amount of data) : A thread can sleep on a page fault and other threads cannot make progress.
Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |