Found by running valgrind on "ovn-controller - Chassis external_ids" unit test case: 24 bytes in 1 blocks are definitely lost in loss record 102 of 180 at 0x4C2DBB6: malloc (vg_replace_malloc.c:299) by 0x4916A4: xmalloc (util.c:112) by 0x47278C: decode_tlv_table_mappings (ofp-util.c:10077) by 0x472A3A: ofputil_decode_tlv_table_reply (ofp-util.c:10159) by 0x40C2B1: recv_S_TLV_TABLE_REQUESTED (ofctrl.c:209) by 0x40C2B1: ofctrl_run (ofctrl.c:471) by 0x406C8F: main (ovn-controller.c:439)
Signed-off-by: Ryan Moats <rmo...@us.ibm.com> --- ovn/controller/ofctrl.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ovn/controller/ofctrl.c b/ovn/controller/ofctrl.c index d8e111d..0493e0d 100644 --- a/ovn/controller/ofctrl.c +++ b/ovn/controller/ofctrl.c @@ -210,6 +210,7 @@ recv_S_TLV_TABLE_REQUESTED(const struct ofp_header *oh, enum ofptype type) if (error) { VLOG_ERR("failed to decode TLV table request (%s)", ofperr_to_string(error)); + ofputil_uninit_tlv_table(&reply.mappings); goto error; } @@ -227,10 +228,12 @@ recv_S_TLV_TABLE_REQUESTED(const struct ofp_header *oh, enum ofptype type) "unsupported index %"PRIu16, map->option_class, map->option_type, map->option_len, map->index); + ofputil_uninit_tlv_table(&reply.mappings); goto error; } else { mff_ovn_geneve = MFF_TUN_METADATA0 + map->index; state = S_CLEAR_FLOWS; + ofputil_uninit_tlv_table(&reply.mappings); return; } } @@ -239,6 +242,7 @@ recv_S_TLV_TABLE_REQUESTED(const struct ofp_header *oh, enum ofptype type) md_free &= ~(UINT64_C(1) << map->index); } } + ofputil_uninit_tlv_table(&reply.mappings); VLOG_DBG("OVN Geneve option not found"); if (!md_free) { -- 2.7.4 (Apple Git-66) _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev