mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-07 10:29:52 +00:00
netfilter: nf_conntrack: do not skip entries in /proc/net/nf_conntrack
ct_seq_show() has an opportunistic garbage collector :
if (nf_ct_should_gc(ct)) {
nf_ct_kill(ct);
goto release;
}
So if one nf_conn is killed there, next time ct_get_next() runs,
we skip the following item in the bucket, even if it should have
been displayed if gc did not take place.
We can decrement st->skip_elems to tell ct_get_next() one of the items
was removed from the chain.
Fixes: 58e207e498 ("netfilter: evict stale entries when user reads /proc/net/nf_conntrack")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
This commit is contained in:
committed by
Florian Westphal
parent
94bd247bc2
commit
c5ba345b2d
@@ -317,6 +317,9 @@ static int ct_seq_show(struct seq_file *s, void *v)
|
|||||||
smp_acquire__after_ctrl_dep();
|
smp_acquire__after_ctrl_dep();
|
||||||
|
|
||||||
if (nf_ct_should_gc(ct)) {
|
if (nf_ct_should_gc(ct)) {
|
||||||
|
struct ct_iter_state *st = s->private;
|
||||||
|
|
||||||
|
st->skip_elems--;
|
||||||
nf_ct_kill(ct);
|
nf_ct_kill(ct);
|
||||||
goto release;
|
goto release;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user