Great catch.  Also, very cool with sleuthing with your malloc histogram (as 
discussed off-list).

Do you think it's worth mentioning in the comment describing xlate_actions()?

Acked-by: Justin Pettit <jpet...@nicira.com>

--Justin


On Aug 19, 2013, at 10:46 PM, Ben Pfaff <b...@nicira.com> wrote:

> 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

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

Reply via email to