netfilter: conntrack: tell compiler to not inline nf_ct_resolve_clash
authorFlorian Westphal <fw@strlen.de>
Thu, 28 Nov 2019 12:25:48 +0000 (13:25 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sat, 30 Nov 2019 18:45:41 +0000 (19:45 +0100)
At this time compiler inlines it, but this code will not be executed
under normal conditions.

Also, no inlining allows to use "nf_ct_resolve_clash%return" perf probe.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_conntrack_core.c

index 0af1898af2b808282e7f84d38e00493512a803bb..f475fec84536a3e7bf61b771fa5a6a7a9f06288e 100644 (file)
@@ -895,9 +895,10 @@ static void nf_ct_acct_merge(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
 }
 
 /* Resolve race on insertion if this protocol allows this. */
-static int nf_ct_resolve_clash(struct net *net, struct sk_buff *skb,
-                              enum ip_conntrack_info ctinfo,
-                              struct nf_conntrack_tuple_hash *h)
+static __cold noinline int
+nf_ct_resolve_clash(struct net *net, struct sk_buff *skb,
+                   enum ip_conntrack_info ctinfo,
+                   struct nf_conntrack_tuple_hash *h)
 {
        /* This is the conntrack entry already in hashes that won race. */
        struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h);