Commit 7811ba45 authored by Fernando Fernandez Mancera's avatar Fernando Fernandez Mancera Committed by Florian Westphal
Browse files

netfilter: nf_conncount: update last_gc only when GC has been performed



Currently last_gc is being updated everytime a new connection is
tracked, that means that it is updated even if a GC wasn't performed.
With a sufficiently high packet rate, it is possible to always bypass
the GC, causing the list to grow infinitely.

Update the last_gc value only when a GC has been actually performed.

Fixes: d2659299 ("netfilter: nf_conncount: reduce unnecessary GC")
Signed-off-by: default avatarFernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
parent d077e811
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -229,6 +229,7 @@ static int __nf_conncount_add(struct net *net,

		nf_ct_put(found_ct);
	}
	list->last_gc = (u32)jiffies;

add_new_node:
	if (WARN_ON_ONCE(list->count > INT_MAX)) {
@@ -248,7 +249,6 @@ static int __nf_conncount_add(struct net *net,
	conn->jiffies32 = (u32)jiffies;
	list_add_tail(&conn->node, &list->head);
	list->count++;
	list->last_gc = (u32)jiffies;

out_put:
	if (refcounted)