Every xlate_actions() needs a corresponding xlate_out_uninit(), but the
call in handle_flow_miss() lacked one.  struct xlate_out has a built-in
256-byte actions stub, so the bug only showed up for lots of actions.

Bug #19198.
Reported-by: Ronald Lee <ronald...@vmware.com>
Signed-off-by: Ben Pfaff <b...@nicira.com>
---
This probably needs to be ported to master, but this was reported as
an urgent bug against branch-1.11, so I've fixed it there first.

 ofproto/ofproto-dpif.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 0f4c42c..dc89727 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -3898,10 +3898,12 @@ handle_flow_miss(struct flow_miss *miss, struct 
flow_miss_op *ops,
         if (miss->key_fitness == ODP_FIT_TOO_LITTLE
             || !flow_miss_should_make_facet(miss, &xout.wc)) {
             handle_flow_miss_without_facet(rule, &xout, miss, ops, n_ops);
+            xlate_out_uninit(&xout);
             return;
         }
 
         facet = facet_create(miss, rule, &xout, stats);
+        xlate_out_uninit(&xout);
         stats = NULL;
     }
     handle_flow_miss_with_facet(miss, facet, now, stats, ops, n_ops);
-- 
1.7.10.4

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

Reply via email to