|
@@ -517,16 +517,17 @@ EXPORT_SYMBOL_GPL(nf_conntrack_alloc);
|
|
static void nf_conntrack_free_rcu(struct rcu_head *head)
|
|
static void nf_conntrack_free_rcu(struct rcu_head *head)
|
|
{
|
|
{
|
|
struct nf_conn *ct = container_of(head, struct nf_conn, rcu);
|
|
struct nf_conn *ct = container_of(head, struct nf_conn, rcu);
|
|
- struct net *net = nf_ct_net(ct);
|
|
|
|
|
|
|
|
nf_ct_ext_free(ct);
|
|
nf_ct_ext_free(ct);
|
|
kmem_cache_free(nf_conntrack_cachep, ct);
|
|
kmem_cache_free(nf_conntrack_cachep, ct);
|
|
- atomic_dec(&net->ct.count);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void nf_conntrack_free(struct nf_conn *ct)
|
|
void nf_conntrack_free(struct nf_conn *ct)
|
|
{
|
|
{
|
|
|
|
+ struct net *net = nf_ct_net(ct);
|
|
|
|
+
|
|
nf_ct_ext_destroy(ct);
|
|
nf_ct_ext_destroy(ct);
|
|
|
|
+ atomic_dec(&net->ct.count);
|
|
call_rcu(&ct->rcu, nf_conntrack_free_rcu);
|
|
call_rcu(&ct->rcu, nf_conntrack_free_rcu);
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(nf_conntrack_free);
|
|
EXPORT_SYMBOL_GPL(nf_conntrack_free);
|