netfilter: conntrack: avoid useless indirection during conntrack destruction
authorFlorian Westphal <fw@strlen.de>
Fri, 7 Jan 2022 04:03:25 +0000 (05:03 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 Apr 2022 12:39:01 +0000 (14:39 +0200)
commit67e4860eeed86a1eec0a86467723f95cbd785076
tree862b192b4c933104652a963a01071b73d3d74468
parentbcba40bd36d705aba9c5fd4622e35118c2a46ed2
netfilter: conntrack: avoid useless indirection during conntrack destruction

commit 6ae7989c9af0d98ab64196f4f4c6f6499454bd23 upstream.

nf_ct_put() results in a usesless indirection:

nf_ct_put -> nf_conntrack_put -> nf_conntrack_destroy -> rcu readlock +
indirect call of ct_hooks->destroy().

There are two _put helpers:
nf_ct_put and nf_conntrack_put.  The latter is what should be used in
code that MUST NOT cause a linker dependency on the conntrack module
(e.g. calls from core network stack).

Everyone else should call nf_ct_put() instead.

A followup patch will convert a few nf_conntrack_put() calls to
nf_ct_put(), in particular from modules that already have a conntrack
dependency such as act_ct or even nf_conntrack itself.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/netfilter/nf_conntrack_common.h
include/net/netfilter/nf_conntrack.h
net/netfilter/nf_conntrack_core.c