From d39ac3eb76dafb0770e1a1004ae2fb675c09a81e Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 11 Apr 2018 09:20:19 -0400 Subject: [PATCH] bgpd: Fix memory leak on shutdown When we remove a bgp instance cleanup the import_vrf and export_vrf lists. Signed-off-by: Donald Sharp --- bgpd/bgpd.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 53ddbf61cc..ccfa90419b 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -3380,6 +3380,17 @@ void bgp_free(struct bgp *bgp) rmap = &bgp->table_map[afi][safi]; if (rmap->name) XFREE(MTYPE_ROUTE_MAP_NAME, rmap->name); + + /* + * Yes this is per AFI, but + * the list_delete_and_null nulls the pointer + * and we'll not leak anything on going down + * and the if test will fail on the second safi. + */ + if (bgp->vpn_policy[afi].import_vrf) + list_delete_and_null(&bgp->vpn_policy[afi].import_vrf); + if (bgp->vpn_policy[afi].export_vrf) + list_delete_and_null(&bgp->vpn_policy[afi].export_vrf); } bgp_scan_finish(bgp); -- 2.39.5