Skip to content

Commit 0634473

Browse files
ton31337mergify[bot]
authored andcommitted
zebra: Cleanup the memory from the hash for MPLS stuff
==1595641== 280 (80 direct, 200 indirect) bytes in 1 blocks are definitely lost in loss record 30 of 38 ==1595641== at 0x483AB65: calloc (vg_replace_malloc.c:760) ==1595641== by 0x493C89C: qcalloc (memory.c:116) ==1595641== by 0x1E8426: lsp_alloc (zebra_mpls.c:1116) ==1595641== by 0x49147F1: hash_get (hash.c:162) ==1595641== by 0x1EC880: mpls_lsp_install (zebra_mpls.c:3192) ==1595641== by 0x1C51BB: zread_vrf_label (zapi_msg.c:3197) ==1595641== by 0x1C6F11: zserv_handle_commands (zapi_msg.c:3863) ==1595641== by 0x24D0F4: zserv_process_messages (zserv.c:523) ==1595641== by 0x498F4CC: thread_call (thread.c:2002) ==1595641== by 0x49253A2: frr_run (libfrr.c:1198) ==1595641== by 0x1A28BA: main (main.c:475) ==1595641== ==1595641== 1,400 (400 direct, 1,000 indirect) bytes in 5 blocks are definitely lost in loss record 35 of 38 ==1595641== at 0x483AB65: calloc (vg_replace_malloc.c:760) ==1595641== by 0x493C89C: qcalloc (memory.c:116) ==1595641== by 0x1E8426: lsp_alloc (zebra_mpls.c:1116) ==1595641== by 0x49147F1: hash_get (hash.c:162) ==1595641== by 0x1EBD7C: mpls_zapi_labels_process (zebra_mpls.c:2915) ==1595641== by 0x1C35D9: zread_mpls_labels_add (zapi_msg.c:2513) ==1595641== by 0x1C6F11: zserv_handle_commands (zapi_msg.c:3863) ==1595641== by 0x24D0F4: zserv_process_messages (zserv.c:523) ==1595641== by 0x498F4CC: thread_call (thread.c:2002) ==1595641== by 0x49253A2: frr_run (libfrr.c:1198) ==1595641== by 0x1A28BA: main (main.c:475) Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> (cherry picked from commit 912b6a5)
1 parent 57745ad commit 0634473

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

zebra/zebra_mpls.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4010,6 +4010,13 @@ void zebra_mpls_client_cleanup_vrf_label(uint8_t proto)
40104010
}
40114011
}
40124012

4013+
static void lsp_table_free(void *p)
4014+
{
4015+
struct zebra_lsp *lsp = p;
4016+
4017+
XFREE(MTYPE_LSP, lsp);
4018+
}
4019+
40134020
/*
40144021
* Called upon process exiting, need to delete LSP forwarding
40154022
* entries from the kernel.
@@ -4018,9 +4025,9 @@ void zebra_mpls_client_cleanup_vrf_label(uint8_t proto)
40184025
void zebra_mpls_close_tables(struct zebra_vrf *zvrf)
40194026
{
40204027
hash_iterate(zvrf->lsp_table, lsp_uninstall_from_kernel, NULL);
4021-
hash_clean(zvrf->lsp_table, NULL);
4028+
hash_clean(zvrf->lsp_table, lsp_table_free);
40224029
hash_free(zvrf->lsp_table);
4023-
hash_clean(zvrf->slsp_table, NULL);
4030+
hash_clean(zvrf->slsp_table, lsp_table_free);
40244031
hash_free(zvrf->slsp_table);
40254032
route_table_finish(zvrf->fec_table[AFI_IP]);
40264033
route_table_finish(zvrf->fec_table[AFI_IP6]);

0 commit comments

Comments
 (0)