diff options
author | Ethan Jackson <ethan@nicira.com> | 2013-04-10 13:05:04 -0700 |
---|---|---|
committer | Ethan Jackson <ethan@nicira.com> | 2013-04-10 13:59:51 -0700 |
commit | 44c2145eed876cf74c5434d60eeb37ccf37cda21 (patch) | |
tree | 5f1b85aec814c002559591579fb1738b2d899ef3 /lib | |
parent | bc7f6c4709b0acae1fca98777f18287cd45c13d6 (diff) |
dpif-linux: Reset epoll() on channel deletion.
The list of epoll events contains references to channels which may
be stale when one of those channels is deleted. The safest thing
to do is simply refresh epoll() whenever a channel is deleted.
Bug #16057.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dpif-linux.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 05446ee3..63cbaa7b 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -358,6 +358,7 @@ del_channel(struct dpif_linux *dpif, uint32_t port_no) } epoll_ctl(dpif->epoll_fd, EPOLL_CTL_DEL, nl_sock_fd(ch->sock), NULL); + dpif->event_offset = dpif->n_events = 0; nl_sock_destroy(ch->sock); ch->sock = NULL; |