linux/net/ipv6
Eric Dumazet a366e300ae ip6mr: remove synchronize_rcu() in favor of SOCK_RCU_FREE
Kirill found that recently added synchronize_rcu() call in
ip6mr_sk_done()
was slowing down netns dismantle and posted a patch to use it only if
the socket
was found.

I instead suggested to get rid of this call, and use instead
SOCK_RCU_FREE

We might later change IPv4 side to use the same technique and unify
both stacks. IPv4 does not use synchronize_rcu() but has a call_rcu()
that could be replaced by SOCK_RCU_FREE.

Tested:
 time for i in {1..1000}; do unshare -n /bin/false;done

 Before : real 7m18.911s
 After : real 10.187s

Fixes: 8571ab479a ("ip6mr: Make mroute_sk rcu-based")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Cc: Yuval Mintz <yuvalm@mellanox.com>
Reviewed-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-03-07 18:13:41 -05:00
..
ila net: Convert ila_net_ops 2018-02-27 11:01:39 -05:00
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-06 01:20:46 -05:00
addrconf_core.c
addrconf.c ipv6: allow userspace to add IFA_F_OPTIMISTIC addresses 2018-03-01 13:43:06 -05:00
addrlabel.c net: Convert fib6_net_ops, ipv6_addr_label_ops and ip6_segments_ops 2018-02-19 14:19:11 -05:00
af_inet6.c net: Convert inet6_net_ops 2018-02-19 14:19:09 -05:00
ah6.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-11-15 11:56:19 -08:00
anycast.c net/ipv6: Pass skb to route lookup 2018-03-04 13:04:22 -05:00
calipso.c
datagram.c net: ipv6: Allow connect to linklocal address from socket bound to vrf 2018-01-08 14:11:18 -05:00
esp6_offload.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-23 13:51:56 -05:00
esp6.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-17 00:10:42 -05:00
exthdrs_core.c inet: whitespace cleanup 2018-02-28 11:43:28 -05:00
exthdrs_offload.c
exthdrs.c ipv6: sr: fix TLVs not being copied using setsockopt 2018-01-10 16:03:55 -05:00
fib6_notifier.c
fib6_rules.c net/ipv6: Pass skb to route lookup 2018-03-04 13:04:22 -05:00
fou6.c
icmp.c net/ipv6: Add support for path selection using hash of 5-tuple 2018-03-04 13:04:23 -05:00
inet6_connection_sock.c
inet6_hashtables.c inet: Add a 2nd listener hashtable (port+addr) 2017-12-03 10:18:28 -05:00
ip6_checksum.c udplite: fix partial checksum initialization 2018-02-16 15:57:42 -05:00
ip6_fib.c net/ipv6: Pass skb to route lookup 2018-03-04 13:04:22 -05:00
ip6_flowlabel.c net: Convert ip6_flowlabel_net_ops 2018-02-19 14:19:11 -05:00
ip6_gre.c gre: add sequence number for collect md mode. 2018-03-04 18:35:02 -05:00
ip6_icmp.c
ip6_input.c
ip6_offload.c
ip6_offload.h
ip6_output.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-06 01:20:46 -05:00
ip6_tunnel.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-06 01:20:46 -05:00
ip6_udp_tunnel.c
ip6_vti.c net/ipv6: Pass skb to route lookup 2018-03-04 13:04:22 -05:00
ip6mr.c ip6mr: remove synchronize_rcu() in favor of SOCK_RCU_FREE 2018-03-07 18:13:41 -05:00
ipcomp6.c
ipv6_sockglue.c inet: whitespace cleanup 2018-02-28 11:43:28 -05:00
Kconfig ipmr,ipmr6: Define a uniform vif_device 2018-03-01 13:13:23 -05:00
Makefile
mcast_snoop.c
mcast.c net/ipv6: Pass skb to route lookup 2018-03-04 13:04:22 -05:00
mip6.c
ndisc.c ipv6: ndisc: use true and false for boolean values 2018-03-07 12:19:47 -05:00
netfilter.c netfilter: use skb_to_full_sk in ip6_route_me_harder 2018-02-25 20:51:13 +01:00
output_core.c net: accept UFO datagrams from tuntap and packet 2017-11-24 01:37:35 +09:00
ping.c net: Convert ping_v6_net_ops 2018-02-19 14:19:11 -05:00
proc.c inet: whitespace cleanup 2018-02-28 11:43:28 -05:00
protocol.c
raw.c net: Convert raw6_net_ops, udplite6_net_ops, ipv6_proc_ops, if6_proc_net_ops and ip6_route_net_late_ops 2018-02-19 14:19:10 -05:00
reassembly.c net: Convert ip6_frags_ops 2018-02-19 14:19:11 -05:00
route.c net/ipv6: Add support for path selection using hash of 5-tuple 2018-03-04 13:04:23 -05:00
seg6_hmac.c
seg6_iptunnel.c
seg6_local.c net/ipv6: Pass skb to route lookup 2018-03-04 13:04:22 -05:00
seg6.c net: Convert fib6_net_ops, ipv6_addr_label_ops and ip6_segments_ops 2018-02-19 14:19:11 -05:00
sit.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-06 01:20:46 -05:00
syncookies.c
sysctl_net_ipv6.c net/ipv6: Add support for path selection using hash of 5-tuple 2018-03-04 13:04:23 -05:00
tcp_ipv6.c net: Convert tcpv6_net_ops 2018-02-19 14:19:10 -05:00
tcpv6_offload.c gso: validate gso_type in GSO handlers 2018-01-22 16:01:30 -05:00
tunnel6.c
udp_impl.h
udp_offload.c gso: validate gso_type in GSO handlers 2018-01-22 16:01:30 -05:00
udp.c net: delete /proc THIS_MODULE references 2018-01-16 15:01:33 -05:00
udplite.c net: Convert ip_tables_net_ops, udplite6_net_ops and xt_net_ops 2018-02-19 14:19:12 -05:00
xfrm6_input.c xfrm: Reinject transport-mode packets through tasklet 2017-12-19 08:23:21 +01:00
xfrm6_mode_beet.c
xfrm6_mode_ro.c
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-24 23:44:15 -05:00
xfrm6_output.c net: xfrm: use skb_gso_validate_network_len() to check gso sizes 2018-03-04 17:49:17 -05:00
xfrm6_policy.c net: Convert xfrm6_net_ops 2018-02-19 14:19:11 -05:00
xfrm6_protocol.c
xfrm6_state.c inet: whitespace cleanup 2018-02-28 11:43:28 -05:00
xfrm6_tunnel.c net: Convert simple pernet_operations 2018-02-27 11:01:35 -05:00