X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=fs%2Feventpoll.c;h=aec5c13f634177bab34f108e9f4891e300b873a3;hb=9ce209d64d820a6d5ed6b952e2c0f917faad6031;hp=7cc0eb756b55e99e5f876eaa43c6c4e466b27b05;hpb=2be4ff2f084842839b041b793ed6237e8d1d315a;p=linux-2.6-omap-h63xx.git diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 7cc0eb756b5..aec5c13f634 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -927,12 +927,16 @@ errxit: /* * During the time we spent in the loop above, some other events * might have been queued by the poll callback. We re-insert them - * here (in case they are not already queued, or they're one-shot). + * inside the main ready-list here. */ for (nepi = ep->ovflist; (epi = nepi) != NULL; nepi = epi->next, epi->next = EP_UNACTIVE_PTR) { - if (!ep_is_linked(&epi->rdllink) && - (epi->event.events & ~EP_PRIVATE_BITS)) + /* + * If the above loop quit with errors, the epoll item might still + * be linked to "txlist", and the list_splice() done below will + * take care of those cases. + */ + if (!ep_is_linked(&epi->rdllink)) list_add_tail(&epi->rdllink, &ep->rdllist); } /*