On Mon, 20 Dec 2004 12:55:59 +0100, Oliver Neukum <[EMAIL PROTECTED]> wrote:

> Am Montag, 20. Dezember 2004 08:04 schrieb Pete Zaitcev:
> > +ÂÂÂÂÂÂÂadd_wait_queue(&rp->wait, &waita);
> > +ÂÂÂÂÂÂÂwhile ((ep = mon_text_fetch(rp, mbus)) == NULL) {
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂif (file->f_flags & O_NONBLOCK) {
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂremove_wait_queue(&rp->wait, 
> > &waita);
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂreturn 
> > -EWOULDBLOCK;ÂÂÂÂ/* Same as EAGAIN in Linux */
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ}
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ/*
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ * We do not count nwaiters, because 
> > ->release is supposed
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ * to be called when all openers are gone 
> > only.
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ */
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂset_current_state(TASK_INTERRUPTIBLE);
> 
> Here you can lose a wakeup.
> 
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂschedule();

Thanks, Oliver. Indeed, it's a bug.

-- Pete

Reply via email to