From a87e668f38f8397f36741f0a76ce931852df21aa Mon Sep 17 00:00:00 2001 From: Divakar D Date: Thu, 23 Mar 2017 14:07:54 +0530 Subject: [PATCH] Dont create Fragment table for every soft reset Rightnow fragment table, which is a hash table, is created every time soft reset is done by Agent, without validating whether hashtable already exists or not. This is resulting in memory leak as old hash table is never deleted. As a fix, fragment table is created only if it is non NULL Change-Id: If54d997967da33cefc15b99efb5f7619bdf88132 closes-bug: #1675309 --- dp-core/vr_fragment.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dp-core/vr_fragment.c b/dp-core/vr_fragment.c index 51afe2a93..81a384141 100644 --- a/dp-core/vr_fragment.c +++ b/dp-core/vr_fragment.c @@ -702,13 +702,15 @@ vr_fragment_table_init(struct vrouter *router) { int ret; - router->vr_fragment_table = vr_htable_create(router, - FRAG_TABLE_ENTRIES, FRAG_OTABLE_ENTRIES, - sizeof(struct vr_fragment), sizeof(struct vr_fragment_key), - FRAG_TABLE_BUCKETS, vr_fragment_get_entry_key); if (!router->vr_fragment_table) { - return vr_module_error(-ENOMEM, __FUNCTION__, __LINE__, - FRAG_TABLE_ENTRIES + FRAG_OTABLE_ENTRIES); + router->vr_fragment_table = vr_htable_create(router, + FRAG_TABLE_ENTRIES, FRAG_OTABLE_ENTRIES, + sizeof(struct vr_fragment), sizeof(struct vr_fragment_key), + FRAG_TABLE_BUCKETS, vr_fragment_get_entry_key); + if (!router->vr_fragment_table) { + return vr_module_error(-ENOMEM, __FUNCTION__, __LINE__, + FRAG_TABLE_ENTRIES + FRAG_OTABLE_ENTRIES); + } } if ((ret = vr_fragment_table_scanner_init(router)))