facet_lookup_valid() attempted to re-revalidate its facet after
it had been removed.

Found by inspection (by Justin).

Reported-by: Justin Pettit <jpet...@nicira.com>
Signed-off-by: Ethan Jackson <et...@nicira.com>
---
 ofproto/ofproto-dpif.c |    5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 386434d..8448e1b 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -4883,10 +4883,7 @@ facet_lookup_valid(struct ofproto_dpif *ofproto, const 
struct flow *flow,
             || tag_set_intersects(&ofproto->backer->revalidate_set,
                                   facet->xout.tags))
         && !facet_revalidate(facet)) {
-        facet_revalidate(facet);
-
-        /* facet_revalidate() may have destroyed 'facet'. */
-        facet = facet_find(ofproto, flow, hash);
+        return NULL;
     }
 
     return facet;
-- 
1.7.9.5

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to