[PATCH] tcp: must free metrics at net dismantle

Subsystems: networking [general], networking [tcp], the rest

STALE5107d

2 messages, 2 authors, 2012-08-09 · open the first message on its own page

[PATCH] tcp: must free metrics at net dismantle

From: Eric Dumazet <hidden>
Date: 2012-08-09 09:19:18

From: Eric Dumazet <edumazet@google.com>

We currently leak all tcp metrics at struct net dismantle time.

tcp_net_metrics_exit() frees the hash table, we must first
iterate it to free all metrics.

Signed-off-by: Eric Dumazet <edumazet@google.com>
---
 net/ipv4/tcp_metrics.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c
index 2288a63..0abe67b 100644
--- a/net/ipv4/tcp_metrics.c
+++ b/net/ipv4/tcp_metrics.c
@@ -731,6 +731,18 @@ static int __net_init tcp_net_metrics_init(struct net *net)
 
 static void __net_exit tcp_net_metrics_exit(struct net *net)
 {
+	unsigned int i;
+
+	for (i = 0; i < (1U << net->ipv4.tcp_metrics_hash_log) ; i++) {
+		struct tcp_metrics_block *tm, *next;
+
+		tm = rcu_dereference_protected(net->ipv4.tcp_metrics_hash[i].chain, 1);
+		while (tm) {
+			next = rcu_dereference_protected(tm->tcpm_next, 1);
+			kfree(tm);
+			tm = next;
+		}
+	}
 	kfree(net->ipv4.tcp_metrics_hash);
 }
 

Re: [PATCH] tcp: must free metrics at net dismantle

From: David Miller <davem@davemloft.net>
Date: 2012-08-09 09:31:57

From: Eric Dumazet <redacted>
Date: Thu, 09 Aug 2012 11:19:13 +0200
From: Eric Dumazet <edumazet@google.com>

We currently leak all tcp metrics at struct net dismantle time.

tcp_net_metrics_exit() frees the hash table, we must first
iterate it to free all metrics.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Applied, thanks Eric.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help