epoll: Fix event clobber
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 27 Sep 2016 15:48:51 +0000 (11:48 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 6 Oct 2016 19:41:48 +0000 (15:41 -0400)
commit850a8755f7703a54be73fbe660f1be07d83911ca
tree4c2ff0b5f38b9b8534c87369d4b9396926c73a6b
parent58206ae4ef6e97e98691f2a4e4261cf0ece33753
epoll: Fix event clobber

It was possible, though I never saw it, for an event entry to be clobbered.
Say we extracted a CEQ message for a particular FD.  That set the events
field in the epoll_event.  Then we attempt to extract another CEQ message,
possibly intending for another FD in the epoll set.  Instead, we get
another message for that same FD that we already set an event for.  When we
set that event, we clobber the original one.

The fix is to accumulate events for a given FD for all CEQ messages.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/iplib/epoll.c