[ovs-dev] [PATCH ovn] pinctrl: Fix various leaks of lport addresses.
Numan Siddique
numans at ovn.org
Thu May 14 07:04:49 UTC 2020
On Thu, May 14, 2020 at 2:15 AM Mark Michelson <mmichels at redhat.com> wrote:
> Acked-by: Mark Michelson <mmichels at redhat.com>
>
>
Thanks Ilya and Mark. I applied this patch to master.
Numan
> On 5/13/20 12:50 PM, Ilya Maximets wrote:
> > Example of one of the valgrind reports:
> >
> > 4,012 bytes in 59 blocks are definitely lost in loss record 1,579 of
> 1,631
> > at 0x4839748: malloc (vg_replace_malloc.c:308)
> > by 0x483BD63: realloc (vg_replace_malloc.c:836)
> > by 0x4C8F74: xrealloc (util.c:149)
> > by 0x4397E4: add_ipv4_netaddr.isra.0 (ovn-util.c:34)
> > by 0x439A65: parse_and_store_addresses (ovn-util.c:141)
> > by 0x439CB8: extract_addresses (ovn-util.c:174)
> > by 0x439CB8: extract_lsp_addresses (ovn-util.c:189)
> > by 0x41A134: fill_ipv6_prefix_state (pinctrl.c:1092)
> > by 0x41A134: prepare_ipv6_prefixd (pinctrl.c:1209)
> > by 0x41FC57: pinctrl_run (pinctrl.c:2930)
> > by 0x4096BB: main (ovn-controller.c:2101)
> >
> > CC: Numan Siddique <numans at ovn.org>
> > CC: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> > Fixes: 8be01f4a5329 ("Send service monitor health checks")
> > Fixes: e3a398e9146e ("controller: Add ipv6 prefix delegation state
> machine")
> > Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
> > ---
> > controller/pinctrl.c | 13 ++++++++-----
> > 1 file changed, 8 insertions(+), 5 deletions(-)
> >
> > diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> > index d976ec82b..103198282 100644
> > --- a/controller/pinctrl.c
> > +++ b/controller/pinctrl.c
> > @@ -1130,6 +1130,7 @@ fill_ipv6_prefix_state(struct ovsdb_idl_txn
> *ovnsb_idl_txn,
> > smap_destroy(&options);
> > }
> > pfd->last_used = time_msec();
> > + destroy_lport_addresses(&c_addrs);
> > }
> >
> > return changed;
> > @@ -1194,8 +1195,10 @@ prepare_ipv6_prefixd(struct ovsdb_idl_txn
> *ovnsb_idl_txn,
> > ea = laddrs.ea;
> > if (laddrs.n_ipv6_addrs > 0) {
> > ip6_addr = laddrs.ipv6_addrs[0].addr;
> > + destroy_lport_addresses(&laddrs);
> > break;
> > }
> > + destroy_lport_addresses(&laddrs);
> > }
> >
> > if (eth_addr_is_zero(ea)) {
> > @@ -5839,8 +5842,9 @@ sync_svc_monitors(struct ovsdb_idl_txn
> *ovnsb_idl_txn,
> >
> > struct eth_addr ea;
> > bool mac_found = false;
> > - for (size_t i = 0; i < pb->n_mac; i++) {
> > + for (size_t i = 0; i < pb->n_mac && !mac_found; i++) {
> > struct lport_addresses laddrs;
> > +
> > if (!extract_lsp_addresses(pb->mac[i], &laddrs)) {
> > continue;
> > }
> > @@ -5853,14 +5857,13 @@ sync_svc_monitors(struct ovsdb_idl_txn
> *ovnsb_idl_txn,
> > }
> > }
> >
> > - if (mac_found) {
> > - break;
> > - } else if (!laddrs.n_ipv4_addrs) {
> > + if (!mac_found && !laddrs.n_ipv4_addrs) {
> > /* IPv4 address(es) are not configured. Use the first
> mac. */
> > ea = laddrs.ea;
> > mac_found = true;
> > - break;
> > }
> > +
> > + destroy_lport_addresses(&laddrs);
> > }
> >
> > if (!mac_found) {
> >
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
More information about the dev
mailing list