[ovs-dev] [PATCH] dpif-linux: Reset epoll() on channel deletion.

Ethan Jackson ethan at nicira.com
Wed Apr 10 20:09:22 UTC 2013


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 at nicira.com>
---
 lib/dpif-linux.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c
index 7293063..b863a2e 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;
-- 
1.7.9.5




More information about the dev mailing list