summaryrefslogtreecommitdiff
path: root/net/ipv6/ip6_icmp.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2020-06-19 12:02:59 -0700
committerDavid S. Miller <davem@davemloft.net>2020-06-19 13:41:59 -0700
commitcc7a21b6fbd945f8d8f61422ccd27203c1fafeb7 (patch)
tree90d5b4982f3d802d0e3c90f888aa74781bca6f43 /net/ipv6/ip6_icmp.c
parente9f0809fb91015b85d159dbfdc64f705fda08712 (diff)
ipv6: icmp6: avoid indirect call for icmpv6_send()
If IPv6 is builtin, we do not need an expensive indirect call to reach icmp6_send(). v2: put inline keyword before the type to avoid sparse warnings. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/ip6_icmp.c')
-rw-r--r--net/ipv6/ip6_icmp.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/net/ipv6/ip6_icmp.c b/net/ipv6/ip6_icmp.c
index e0086758b6ee..70c8c2f36c98 100644
--- a/net/ipv6/ip6_icmp.c
+++ b/net/ipv6/ip6_icmp.c
@@ -9,6 +9,8 @@
#if IS_ENABLED(CONFIG_IPV6)
+#if !IS_BUILTIN(CONFIG_IPV6)
+
static ip6_icmp_send_t __rcu *ip6_icmp_send;
int inet6_register_icmp_sender(ip6_icmp_send_t *fn)
@@ -37,14 +39,12 @@ void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
rcu_read_lock();
send = rcu_dereference(ip6_icmp_send);
-
- if (!send)
- goto out;
- send(skb, type, code, info, NULL);
-out:
+ if (send)
+ send(skb, type, code, info, NULL);
rcu_read_unlock();
}
EXPORT_SYMBOL(icmpv6_send);
+#endif
#if IS_ENABLED(CONFIG_NF_NAT)
#include <net/netfilter/nf_conntrack.h>