bgpd: Fix 'struct peer' memory leaks
peer_delete has been written to handle the peer->group pointer and
to remove the peer from the peer group if it exists upon deletion being
called. Shutdown/deletion Code was intentionally setting the peer-group
to NULL prior to calling peer_delete. This leaked the memory associated
with the peer->group because of refcnt accounting.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index f77aa72..0068037 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1696,7 +1696,6 @@
for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
{
- peer->group = NULL;
peer_delete (peer);
}
list_delete (group->peer);
@@ -1726,7 +1725,6 @@
for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
{
- peer->group = NULL;
peer_delete (peer);
}
list_delete_all_node (group->peer);