On 2 September 2016 at 17:43, Jarno Rajahalme <ja...@ovn.org> wrote:
> Bridges might get deleted while revalidation is going through the
> xlate cache entries.  Thus we need to do the xbridge lookup before we
> use the xlate cache, and use uuid's instead of pointers on xlate cache
> entries that might refer to other bridges.
>
> This has the side effect of not updating the learned flow or mac table
> on a peer bridge if the first bridge is deleted.  Such cases should be
> very rare though, as no-one has reported this bug so far.  So it
> appears that this corner-case is not work the code complication
> covering it would cause.
>
> Found by inspection.
>
> Signed-off-by: Jarno Rajahalme <ja...@ovn.org>

As we discussed offline, this should not be possible. The main thread
will call the ofproto's destruct() method, which in ofproto-dpif first
calls xlate_remove_ofproto(), then udpif_synchronize(), meaning that
the ofproto cannot be looked up, then all threads stop and the main
thread flushes all datapath flows and udpif (including ukey,
xlate_cache) state before restarting udpif. Subsequent incoming
packets will fail to find the ofproto being deleted, so there should
be no inappropriate deref of ofproto pointers.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to