mirror of https://github.com/FRRouting/frr.git
pimd : memory leak in rp_table cleanup.
Problem Statement: ================== valgrind shows memleaks in rp_table, when pimd shuts down gracefully. 2020-05-05 22:09:29,451 ERROR: Memory leaks in router [r4] for daemon [pimd] 2020-05-05 22:09:29,451 ERROR: Memory leaks in router [r4] for daemon [zebra] 2020-05-05 22:09:29,637 ERROR: Found memory leak in module pimd 2020-05-05 22:09:29,638 ERROR: ==6178== 184 (56 direct, 128 indirect) bytes in 1 blocks are definitely lost in loss record 21 of 21 2020-05-05 22:09:29,638 ERROR: ==6178== at 0x4C2FFAC: calloc (vg_replace_malloc.c:762) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4E855EE: qcalloc (memory.c:111) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4EAA43C: route_table_init_with_delegate (table.c:52) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x1281A1: pim_rp_init (pim_rp.c:114) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11D0F8: pim_instance_init (pim_instance.c:117) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11D0F8: pim_vrf_new (pim_instance.c:150) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4EB1BEC: vrf_get (vrf.c:209) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4EB2B2F: vrf_init (vrf.c:493) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11D227: pim_vrf_init (pim_instance.c:217) 2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11BBAB: main (pim_main.c:121) Fix: ==== rp_info is allocated in pim_rp_init API. rp_info pointer is present in rp_list and rp_table. In rp_list cleanup, the memory for rp_info gets freed. rp_table clean up should be done first and then rp_list. Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
This commit is contained in:
parent
660b044294
commit
906640dbaf
|
@ -139,11 +139,12 @@ void pim_rp_init(struct pim_instance *pim)
|
|||
|
||||
void pim_rp_free(struct pim_instance *pim)
|
||||
{
|
||||
if (pim->rp_list)
|
||||
list_delete(&pim->rp_list);
|
||||
if (pim->rp_table)
|
||||
route_table_finish(pim->rp_table);
|
||||
pim->rp_table = NULL;
|
||||
|
||||
if (pim->rp_list)
|
||||
list_delete(&pim->rp_list);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue