aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2013-04-10 13:05:04 -0700
committerEthan Jackson <ethan@nicira.com>2013-04-10 13:59:51 -0700
commit44c2145eed876cf74c5434d60eeb37ccf37cda21 (patch)
tree5f1b85aec814c002559591579fb1738b2d899ef3 /lib
parentbc7f6c4709b0acae1fca98777f18287cd45c13d6 (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.c1
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;