diff mbox

[net-next] tipc: fix memory leak of publications

Message ID 1398741138-30523-1-git-send-email-ying.xue@windriver.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Ying Xue April 29, 2014, 3:12 a.m. UTC
Commit 1bb8dce57f4d15233688c68990852a10eb1cd79f ("tipc: fix memory
leak during module removal") introduced a memory leak issue: when
name table is stopped, it's forgotten that publication instances are
freed properly. Additionally the useless "continue" statement in
tipc_nametbl_stop() is removed as well.

Reported-by: Jason <huzhijiang@gmail.com>
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Acked-by: Erik Hugne <erik.hugne@ericsson.com>
---
 net/tipc/name_table.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller April 30, 2014, 5:32 p.m. UTC | #1
From: Ying Xue <ying.xue@windriver.com>
Date: Tue, 29 Apr 2014 11:12:18 +0800

> Commit 1bb8dce57f4d15233688c68990852a10eb1cd79f ("tipc: fix memory
> leak during module removal") introduced a memory leak issue: when
> name table is stopped, it's forgotten that publication instances are
> freed properly. Additionally the useless "continue" statement in
> tipc_nametbl_stop() is removed as well.
> 
> Reported-by: Jason <huzhijiang@gmail.com>
> Signed-off-by: Ying Xue <ying.xue@windriver.com>
> Acked-by: Erik Hugne <erik.hugne@ericsson.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c
index 9bcf4b5..9d7d37d 100644
--- a/net/tipc/name_table.c
+++ b/net/tipc/name_table.c
@@ -969,6 +969,7 @@  static void tipc_purge_publications(struct name_seq *seq)
 	list_for_each_entry_safe(publ, safe, &info->zone_list, zone_list) {
 		tipc_nametbl_remove_publ(publ->type, publ->lower, publ->node,
 					 publ->ref, publ->key);
+		kfree(publ);
 	}
 }
 
@@ -990,7 +991,6 @@  void tipc_nametbl_stop(void)
 		hlist_for_each_entry_safe(seq, safe, seq_head, ns_list) {
 			tipc_purge_publications(seq);
 		}
-		continue;
 	}
 	kfree(table.types);
 	table.types = NULL;