Eric Dumazet
131287ff83
once: add DO_ONCE_SLOW() for sleepable contexts
...
[ Upstream commit 62c07983bef9d3e78e71189441e1a470f0d1e653 ]
Christophe Leroy reported a ~80ms latency spike
happening at first TCP connect() time.
This is because __inet_hash_connect() uses get_random_once()
to populate a perturbation table which became quite big
after commit 4c2c8f03a5ab ("tcp: increase source port perturb table to 2^16")
get_random_once() uses DO_ONCE(), which block hard irqs for the duration
of the operation.
This patch adds DO_ONCE_SLOW() which uses a mutex instead of a spinlock
for operations where we prefer to stay in process context.
Then __inet_hash_connect() can use get_random_slow_once()
to populate its perturbation table.
Fixes: 4c2c8f03a5ab ("tcp: increase source port perturb table to 2^16")
Fixes: 190cc82489f4 ("tcp: change source port randomizarion at connect() time")
Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/netdev/CANn89iLAEYBaoYajy0Y9UmGFff5GPxDUoG-ErVB2jDdRNQ5Tug@mail.gmail.com/T/#t
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Willy Tarreau <w@1wt.eu>
Tested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-10-26 13:22:27 +02:00
..
6lowpan
9p
net/9p: Initialize the iounit field during fid creation
2022-08-25 11:18:17 +02:00
802
8021q
appletalk
atm
ax25
ax25: Fix UAF bugs in ax25 timers
2022-04-20 09:19:40 +02:00
batman-adv
batman-adv: Don't skb_split skbuffs with frag_list
2022-05-18 09:47:24 +02:00
bluetooth
Bluetooth: L2CAP: Fix build errors in some archs
2022-09-05 10:27:45 +02:00
bpf
bpf: Don't redirect packets with invalid pkt_len
2022-09-05 10:27:46 +02:00
bpfilter
bridge
netfilter: ebtables: fix memory leak when blob is malformed
2022-09-28 11:04:07 +02:00
caif
can
can: j1939: j1939_session_destroy(): fix memory leak of skbs
2022-08-25 11:18:39 +02:00
ceph
core
net: neigh: don't call kfree_skb() under spin_lock_irqsave()
2022-09-05 10:27:48 +02:00
dcb
net: dcb: disable softirqs in dcbnl_flush_dev()
2022-03-08 19:07:51 +01:00
dccp
dccp: put dccp_qpolicy_full() and dccp_qpolicy_push() in the same lock
2022-08-25 11:17:49 +02:00
decnet
dns_resolver
dsa
net: dsa: Add missing of_node_put() in dsa_port_parse_of
2022-03-23 09:12:07 +01:00
ethernet
hsr
ieee802154
net/ieee802154: reject zero-sized raw_sendmsg()
2022-10-26 13:22:26 +02:00
ife
ipv4
once: add DO_ONCE_SLOW() for sleepable contexts
2022-10-26 13:22:27 +02:00
ipv6
netfilter: nft_fib: Fix for rpath check with VRF devices
2022-10-26 13:22:25 +02:00
iucv
kcm
kcm: fix strp_init() order and cleanup
2022-09-15 12:04:50 +02:00
key
af_key: Do not call xfrm_probe_algs in parallel
2022-09-05 10:27:40 +02:00
l2tp
ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg
2022-06-22 14:11:21 +02:00
l3mdev
l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using netdev_master_upper_dev_get_rcu
2022-04-27 13:50:47 +02:00
lapb
llc
llc: only change llc->dev when bind() succeeds
2022-03-28 08:46:48 +02:00
mac80211
wifi: mac80211: allow bw change during channel switch in mesh
2022-10-26 13:22:22 +02:00
mac802154
net: mac802154: Fix a condition in the receive path
2022-09-15 12:04:53 +02:00
mpls
ncsi
netfilter
netfilter: nfnetlink_osf: fix possible bogus match in nf_osf_find()
2022-09-28 11:04:05 +02:00
netlabel
netlabel: fix out-of-bounds memory accesses
2022-04-15 14:18:35 +02:00
netlink
netlink: do not reset transport header in netlink_recvmsg()
2022-05-18 09:47:25 +02:00
netrom
nfc
NFC: NULL out the dev->rfkill to prevent UAF
2022-06-14 18:11:33 +02:00
nsh
openvswitch
net: openvswitch: fix parsing of nw_proto for IPv6 fragments
2022-06-29 08:58:44 +02:00
packet
net/af_packet: check len when min_header_len equals to 0
2022-09-05 10:27:48 +02:00
phonet
phonet: refcount leak in pep_sock_accep
2022-01-11 15:23:33 +01:00
psample
qrtr
rds
net: rds: don't hold sock lock when cancelling work from rds_tcp_reset_callbacks()
2022-10-26 13:22:26 +02:00
rfkill
rose
rose: check NULL rose_loopback_neigh->loopback
2022-09-05 10:27:40 +02:00
rxrpc
rxrpc: Fix calc of resend age
2022-09-28 11:03:58 +02:00
sched
net: sched: fix possible refcount leak in tc_new_tfilter()
2022-09-28 11:04:07 +02:00
sctp
sctp: handle the error returned from sctp_auth_asoc_init_active_key
2022-10-26 13:22:26 +02:00
smc
net/smc: Remove redundant refcount increase
2022-09-15 12:04:50 +02:00
strparser
sunrpc
SUNRPC: RPC level errors should set task->tk_rpc_status
2022-09-05 10:27:40 +02:00
switchdev
tipc
tipc: fix shift wrapping bug in map_get()
2022-09-15 12:04:55 +02:00
tls
net/tls: Fix race in TLS device down flow
2022-07-29 17:14:12 +02:00
unix
af_unix: Fix a data-race in unix_dgram_peer_wake_me().
2022-06-14 18:11:57 +02:00
vmw_vsock
vhost/vsock: Use kvmalloc/kvfree for larger packets.
2022-10-26 13:22:25 +02:00
wimax
wireless
wifi: cfg80211: update hidden BSSes to avoid WARN_ON
2022-10-15 07:54:41 +02:00
x25
net/x25: Fix null-ptr-deref caused by x25_disconnect
2022-04-15 14:18:21 +02:00
xdp
xfrm
xfrm: fix refcount leak in __xfrm_policy_check()
2022-09-05 10:27:39 +02:00
compat.c
Kconfig
Makefile
socket.c
net: Fix a data-race around sysctl_somaxconn.
2022-09-05 10:27:42 +02:00
sysctl_net.c