Commit 84657984c26fd0b64743a397f3a1a587fa4b575a
Committed by
Pablo Neira Ayuso
1 parent
ac7b848390
netfilter: add and use nf_ct_unconfirmed_destroy
This also removes __nf_ct_unconfirmed_destroy() call from nf_ct_iterate_cleanup_net, so that function can be used only when missing conntracks from unconfirmed list isn't a problem. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Showing 3 changed files with 15 additions and 4 deletions Side-by-side Diff
include/net/netfilter/nf_conntrack.h
... | ... | @@ -224,6 +224,9 @@ |
224 | 224 | enum ip_conntrack_dir dir, |
225 | 225 | u32 seq); |
226 | 226 | |
227 | +/* Set all unconfirmed conntrack as dying */ | |
228 | +void nf_ct_unconfirmed_destroy(struct net *); | |
229 | + | |
227 | 230 | /* Iterate over all conntracks: if iter returns true, it's deleted. */ |
228 | 231 | void nf_ct_iterate_cleanup_net(struct net *net, |
229 | 232 | int (*iter)(struct nf_conn *i, void *data), |
net/netfilter/nf_conntrack_core.c
... | ... | @@ -1686,6 +1686,17 @@ |
1686 | 1686 | } |
1687 | 1687 | } |
1688 | 1688 | |
1689 | +void nf_ct_unconfirmed_destroy(struct net *net) | |
1690 | +{ | |
1691 | + might_sleep(); | |
1692 | + | |
1693 | + if (atomic_read(&net->ct.count) > 0) { | |
1694 | + __nf_ct_unconfirmed_destroy(net); | |
1695 | + synchronize_net(); | |
1696 | + } | |
1697 | +} | |
1698 | +EXPORT_SYMBOL_GPL(nf_ct_unconfirmed_destroy); | |
1699 | + | |
1689 | 1700 | void nf_ct_iterate_cleanup_net(struct net *net, |
1690 | 1701 | int (*iter)(struct nf_conn *i, void *data), |
1691 | 1702 | void *data, u32 portid, int report) |
1692 | 1703 | |
... | ... | @@ -1697,13 +1708,9 @@ |
1697 | 1708 | if (atomic_read(&net->ct.count) == 0) |
1698 | 1709 | return; |
1699 | 1710 | |
1700 | - __nf_ct_unconfirmed_destroy(net); | |
1701 | - | |
1702 | 1711 | d.iter = iter; |
1703 | 1712 | d.data = data; |
1704 | 1713 | d.net = net; |
1705 | - | |
1706 | - synchronize_net(); | |
1707 | 1714 | |
1708 | 1715 | nf_ct_iterate_cleanup(iter_net_only, &d, portid, report); |
1709 | 1716 | } |
net/netfilter/nfnetlink_cttimeout.c