recirc_state_clone() allocates a memory for new->ofpacts without later on freeing it. valgrind test case: 381: xmemdup(util.c:134) recirc_state_clone(ofproto-dpif-rid.c:221) recirc_alloc_id__(ofproto-dpif-rid.c:238) recirc_alloc_id_ctx(ofproto-dpif-rid.c:281) compose_recirculate_action__(ofproto-dpif-xlate.c:3643) compose_recirculate_action(ofproto-dpif-xlate.c:3664) xlate_actions(ofproto-dpif-xlate.c:5325) ofproto_trace(ofproto-dpif.c:5074) ofproto_unixctl_trace(ofproto-dpif.c:4934) process_command(unixctl.c:297) run_connection(unixctl.c:331) unixctl_server_run(unixctl.c:384) main(ovs-vswitchd.c:121)
Signed-off-by: William Tu <u9012...@gmail.com> --- ofproto/ofproto-dpif-rid.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ofproto/ofproto-dpif-rid.c b/ofproto/ofproto-dpif-rid.c index 30c1c94..0631f2c 100644 --- a/ofproto/ofproto-dpif-rid.c +++ b/ofproto/ofproto-dpif-rid.c @@ -303,6 +303,11 @@ recirc_id_node_unref(const struct recirc_id_node *node_) OVS_EXCLUDED(mutex) { struct recirc_id_node *node = CONST_CAST(struct recirc_id_node *, node_); + const struct recirc_state *state; + + state = &node->state; + if (state && state->ofpacts) + free(state->ofpacts); if (node && ovs_refcount_unref(&node->refcount) == 1) { ovs_mutex_lock(&mutex); -- 2.5.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev