Thanks, I added this fix too and applied this to master and branch-2.6.
On Fri, Aug 19, 2016 at 04:11:58PM -0700, Ramu Ramamurthy wrote: > I applied this patch, and while it fixes the original leak, it still > produces the following leak: > > valgrind.8774-==8776== 2,464 bytes in 44 blocks are definitely lost > in loss record 176 of 179 > valgrind.8774-==8776== at 0x4C29BFD: malloc (in > /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) > valgrind.8774-==8776== by 0x48E3C7: xmalloc (util.c:112) > valgrind.8774-==8776== by 0x411BAD: get_nat_addresses_and_keys > (pinctrl.c:1221) > valgrind.8774-==8776== by 0x411BAD: send_garp_run (pinctrl.c:1259) > valgrind.8774-==8776== by 0x411BAD: pinctrl_run (pinctrl.c:787) > valgrind.8774:==8776== by 0x407ABE: main (ovn-controller.c:451) > > With the following incremental change, no leak is found in that test. > ( as the above points to leaking laddrs which > was mallocd in get_nat_addresses_and_keys()) > > struct lport_addresses *laddrs = iter->data; > destroy_lport_addresses(laddrs); > shash_delete(&nat_addresses, iter); > + free(laddrs); > } > shash_destroy(&nat_addresses); > > > On Fri, Aug 19, 2016 at 9:03 AM, Ben Pfaff <b...@ovn.org> wrote: > > send_garp_run() allocated and populated a shash of struct lport_addresses, > > but it only freed some of the data. This fixes the problem. > > > > CC: Chandra S Vejendla <csvej...@us.ibm.com> > > Reported-by: Ramu Ramamurthy <ramu.ramamur...@gmail.com> > > Fixes: 8439c2ebd823 ("ovn: Support for GARP for NAT IPs via localnet") > > Signed-off-by: Ben Pfaff <b...@ovn.org> > > --- > > v1->v2: Rebase. > > > > ovn/controller/pinctrl.c | 10 ++++++++-- > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c > > index 358602a..fc72bd5 100644 > > --- a/ovn/controller/pinctrl.c > > +++ b/ovn/controller/pinctrl.c > > @@ -1059,7 +1059,6 @@ send_garp_update(const struct sbrec_port_binding > > *binding_rec, > > } > > free(name); > > } > > - destroy_lport_addresses(laddrs); > > return; > > } > > > > @@ -1302,7 +1301,14 @@ send_garp_run(const struct ovsrec_bridge *br_int, > > const char *chassis_id, > > sset_destroy(&localnet_vifs); > > sset_destroy(&local_l3gw_ports); > > simap_destroy(&localnet_ofports); > > - shash_destroy_free_data(&nat_addresses); > > + > > + SHASH_FOR_EACH_SAFE (iter, next, &nat_addresses) { > > + struct lport_addresses *laddrs = iter->data; > > + destroy_lport_addresses(laddrs); > > + shash_delete(&nat_addresses, iter); > > + } > > + shash_destroy(&nat_addresses); > > + > > sset_destroy(&nat_ip_keys); > > } > > > > -- > > 2.1.3 > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev