On Sun, Jul 20, 2014 at 12:43:41AM -0700, Alex Wang wrote: > From: Ryan Wilson <wr...@nicira.com> > > Since the use of xcache, the netdev struct can be freed by the > revalidator threads. This fact also makes the following race possible: > > 1. Consider there is a gre tunnel, and datapath flows that go through > the tunnel. Now, assume user deletes the tunnel port. > 2. The main thread closes all of its references to the corresponding > netdev struct. > 3. If the ukey for the tunnel datapath flows hold the last reference > to the old port's netdev, the revalidator will then close it > and remove the netlink notifier struct (if the netdev is the last > vport netdev). > 4. However, if the main thread executes the netdev_vport_run(), and > sees the existence of netlink notifier struct (before revalidator > frees it), it will try polling updates from the notifier socket. > And when it polls the socket fd, the fd has already been freed, > and poll will keep failing with "Bad file descriptor". > > This race has already been fixed on master by commit 3c27dbe6 (route > -table: Make route-table module thread-safe.). This commit backports > it to branch-2.3. > > VMware-BZ: #1287360 > > Signed-off-by: Alex Wang <al...@nicira.com>
This should reproduce Ryan's Signed-off-by from the original commit. Acked-by: Ben Pfaff <b...@nicira.com> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev