Thanks!  I applied this to master.  I don't think it needs a backport
but let me know if I'm wrong.

On Mon, Apr 24, 2017 at 10:54:30AM -0700, Yi-Hung Wei wrote:
> LGTM, thanks!
> 
> -Yi-Hung
> 
> On Mon, Apr 24, 2017 at 9:44 AM, Ben Pfaff <b...@ovn.org> wrote:
> > On Fri, Apr 07, 2017 at 02:43:44PM -0700, Yi-Hung Wei wrote:
> >> In testcase "ovn -- send gratuitous arp for NAT rules on distributed 
> >> router",
> >> valgrind reports memory leaks as following.
> >>     xrealloc (util.c:123)
> >>     add_ipv4_netaddr.isra.0 (ovn-util.c:28)
> >>     extract_addresses (ovn-util.c:128)
> >>     extract_addresses_with_port.constprop.17 (pinctrl.c:1257)
> >>     consider_nat_address.isra.15 (pinctrl.c:1318)
> >>     get_nat_addresses_and_keys (pinctrl.c:1361)
> >>     send_garp_run (pinctrl.c:1402)
> >>     pinctrl_run (pinctrl.c:796)
> >>     main (ovn-controller.c:619)
> >>
> >> Signed-off-by: Yi-Hung Wei <yihung....@gmail.com>
> >> ---
> >>  ovn/controller/pinctrl.c | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >> diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
> >> index 9b408ea6c253..8063e6487b2a 100644
> >> --- a/ovn/controller/pinctrl.c
> >> +++ b/ovn/controller/pinctrl.c
> >> @@ -1317,6 +1317,7 @@ consider_nat_address(const char *nat_address,
> >>      char *lport = NULL;
> >>      if (!extract_addresses_with_port(nat_address, laddrs, &lport)
> >>          || (!lport && !strcmp(pb->type, "patch"))) {
> >> +        destroy_lport_addresses(laddrs);
> >>          free(laddrs);
> >>          if (lport) {
> >>              free(lport);
> >> @@ -1324,6 +1325,7 @@ consider_nat_address(const char *nat_address,
> >>          return;
> >>      } else if (lport) {
> >>          if (!pinctrl_is_chassis_resident(lports, chassis, lport)) {
> >> +            destroy_lport_addresses(laddrs);
> >>              free(laddrs);
> >>              free(lport);
> >>              return;
> >
> > Thanks for fixing the memory leak!
> >
> > This function has quite a lot of redundant code.  What do you think of
> > this version?
> >
> > --8<--------------------------cut here-------------------------->8--
> >
> > From: Yi-Hung Wei <yihung....@gmail.com>
> > Date: Fri, 7 Apr 2017 14:43:44 -0700
> > Subject: [PATCH] pinctrl: Fix memory leak in consider_nat_address()
> >
> > In testcase "ovn -- send gratuitous arp for NAT rules on distributed 
> > router",
> > valgrind reports memory leaks as following.
> >     xrealloc (util.c:123)
> >     add_ipv4_netaddr.isra.0 (ovn-util.c:28)
> >     extract_addresses (ovn-util.c:128)
> >     extract_addresses_with_port.constprop.17 (pinctrl.c:1257)
> >     consider_nat_address.isra.15 (pinctrl.c:1318)
> >     get_nat_addresses_and_keys (pinctrl.c:1361)
> >     send_garp_run (pinctrl.c:1402)
> >     pinctrl_run (pinctrl.c:796)
> >     main (ovn-controller.c:619)
> >
> > Signed-off-by: Yi-Hung Wei <yihung....@gmail.com>
> > Signed-off-by: Ben Pfaff <b...@ovn.org>
> > ---
> >  ovn/controller/pinctrl.c | 16 +++++-----------
> >  1 file changed, 5 insertions(+), 11 deletions(-)
> >
> > diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
> > index 9b408ea6c253..8c5042a590ee 100644
> > --- a/ovn/controller/pinctrl.c
> > +++ b/ovn/controller/pinctrl.c
> > @@ -1316,20 +1316,14 @@ consider_nat_address(const char *nat_address,
> >      struct lport_addresses *laddrs = xmalloc(sizeof *laddrs);
> >      char *lport = NULL;
> >      if (!extract_addresses_with_port(nat_address, laddrs, &lport)
> > -        || (!lport && !strcmp(pb->type, "patch"))) {
> > +        || (!lport && !strcmp(pb->type, "patch"))
> > +        || (lport && !pinctrl_is_chassis_resident(lports, chassis, 
> > lport))) {
> > +        destroy_lport_addresses(laddrs);
> >          free(laddrs);
> > -        if (lport) {
> > -            free(lport);
> > -        }
> > -        return;
> > -    } else if (lport) {
> > -        if (!pinctrl_is_chassis_resident(lports, chassis, lport)) {
> > -            free(laddrs);
> > -            free(lport);
> > -            return;
> > -        }
> >          free(lport);
> > +        return;
> >      }
> > +    free(lport);
> >
> >      int i;
> >      for (i = 0; i < laddrs->n_ipv4_addrs; i++) {
> > --
> > 2.10.2
> >
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to