linux-stable/net
Eric Dumazet b32774b527 tcp: Fix NEW_SYN_RECV handling in inet_twsk_purge()
[ Upstream commit 1c4e97dd2d ]

inet_twsk_purge() uses rcu to find TIME_WAIT and NEW_SYN_RECV
objects to purge.

These objects use SLAB_TYPESAFE_BY_RCU semantic and need special
care. We need to use refcount_inc_not_zero(&sk->sk_refcnt).

Reuse the existing correct logic I wrote for TIME_WAIT,
because both structures have common locations for
sk_state, sk_family, and netns pointer.

If after the refcount_inc_not_zero() the object fields longer match
the keys, use sock_gen_put(sk) to release the refcount.

Then we can call inet_twsk_deschedule_put() for TIME_WAIT,
inet_csk_reqsk_queue_drop_and_put() for NEW_SYN_RECV sockets,
with BH disabled.

Then we need to restart the loop because we had drop rcu_read_lock().

Fixes: 740ea3c4a0 ("tcp: Clean up kernel listener's reqsk in inet_twsk_purge()")
Link: https://lore.kernel.org/netdev/CANn89iLvFuuihCtt9PME2uS1WJATnf5fKjDToa1WzVnRzHnPfg@mail.gmail.com/T/#u
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20240308200122.64357-2-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-03-26 18:18:53 -04:00
..
6lowpan
9p net: 9p: avoid freeing uninit memory in p9pdu_vreadf 2023-12-13 05:44:30 +09:00
802 net: fill in MODULE_DESCRIPTION()s under net/802* 2023-10-28 11:29:28 +01:00
8021q vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING 2024-01-31 16:21:05 -08:00
appletalk appletalk: Fix Use-After-Free in atalk_ioctl 2023-12-14 12:02:45 +01:00
atm atm: Fix Use-After-Free in do_vcc_ioctl 2023-12-12 13:14:08 +01:00
ax25
batman-adv
bluetooth Bluetooth: Fix eir name length 2024-03-26 18:18:25 -04:00
bpf bpf: Fix a few selftest failures due to llvm18 change 2024-02-05 20:16:51 +00:00
bpfilter
bridge netfilter: bridge: confirm multicast packets before passing them up the stack 2024-03-06 14:53:51 +00:00
caif
can can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER) 2024-02-23 09:51:57 +01:00
ceph libceph: fail sparse-read if the data length doesn't match 2024-03-01 13:41:43 +01:00
core net: mctp: copy skb ext data when fragmenting 2024-03-26 18:18:19 -04:00
dcb
dccp dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses. 2023-11-02 12:56:03 +01:00
devlink devlink: Fix length of eswitch inline-mode 2024-03-26 18:18:27 -04:00
dns_resolver keys, dns: Fix size check of V1 server-list header 2024-01-25 15:44:44 -08:00
dsa net: dsa: fix netdev_priv() dereference before check on non-DSA netdevice events 2024-01-25 15:45:26 -08:00
ethernet
ethtool ethtool: netlink: Add missing ethnl_ops_begin/complete 2024-01-25 15:45:30 -08:00
handshake net/handshake: Fix handshake_req_destroy_test1 2024-02-23 09:51:24 +01:00
hsr net: hsr: Use correct offset for HSR TLV values in supervisory HSR frames 2024-03-06 14:53:51 +00:00
ieee802154
ife net: sched: ife: fix potential use-after-free 2023-12-15 10:50:18 +00:00
ipv4 tcp: Fix NEW_SYN_RECV handling in inet_twsk_purge() 2024-03-26 18:18:53 -04:00
ipv6 ipv6: fib6_rules: flush route cache when rule is changed 2024-03-26 18:18:25 -04:00
iucv net/iucv: fix the allocation size of iucv_path_table array 2024-03-26 18:17:52 -04:00
kcm net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function 2024-03-26 18:18:26 -04:00
key
l2tp l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() function 2024-03-26 18:18:26 -04:00
l3mdev
lapb
llc llc: call sock_orphan() at release time 2024-02-05 20:17:09 +00:00
mac80211 wifi: mac80211: use deflink and fix typo in link ID check 2024-03-26 18:18:05 -04:00
mac802154
mctp net: mctp: copy skb ext data when fragmenting 2024-03-26 18:18:19 -04:00
mpls
mptcp mptcp: fix possible deadlock in subflow diag 2024-03-06 14:53:58 +00:00
ncsi net/ncsi: Fix netlink major/minor version numbers 2024-01-25 15:44:45 -08:00
netfilter netfilter: nf_conntrack_h323: Add protection for bmp length out of range 2024-03-15 10:48:20 -04:00
netlabel calipso: fix memory leak in netlbl_calipso_add_pass() 2024-01-25 15:44:39 -08:00
netlink netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter 2024-03-06 14:53:49 +00:00
netrom netrom: Fix data-races around sysctl_net_busy_read 2024-03-15 10:48:22 -04:00
nfc nfc: nci: free rx_data_reassembly skb on NCI device cleanup 2024-02-23 09:51:38 +01:00
nsh
openvswitch net: openvswitch: limit the number of recursions from action sets 2024-02-23 09:51:26 +01:00
packet packet: Move reference count in packet_sock to atomic_long_t 2023-12-04 14:45:04 -08:00
phonet phonet/pep: fix racy skb_queue_empty() use 2024-03-01 13:41:58 +01:00
psample psample: Require 'CAP_NET_ADMIN' when joining "packets" group 2023-12-07 09:54:02 -08:00
qrtr net: qrtr: ns: Return 0 if server port is not present 2024-01-01 18:41:29 +00:00
rds net/rds: fix WARNING in rds_conn_connect_if_down 2024-03-15 10:48:20 -04:00
rfkill net: rfkill: gpio: set GPIO direction 2023-12-12 10:14:57 +01:00
rose net/rose: fix races in rose_kill_by_device() 2023-12-15 11:59:53 +00:00
rxrpc rxrpc: Fix counting of new acks and nacks 2024-02-16 19:14:23 +01:00
sched net/sched: flower: Add lock protection when remove filter handle 2024-03-01 13:41:58 +01:00
sctp sctp: fix busy polling 2024-01-25 15:44:56 -08:00
smc net/smc: disable SEID on non-s390 archs where virtual ISM may be used 2024-02-05 20:16:56 +00:00
strparser
sunrpc net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr() 2024-03-26 18:18:47 -04:00
switchdev net: bridge: switchdev: Skip MDB replays of deferred events on offload 2024-03-01 13:41:54 +01:00
tipc tipc: Check the bearer type before calling tipc_udp_nl_bearer_add() 2024-02-16 19:14:23 +01:00
tls tls: fix use-after-free on failed backlog decryption 2024-03-06 14:53:52 +00:00
unix af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc(). 2024-03-26 18:18:05 -04:00
vmw_vsock virtio/vsock: send credit update during setting SO_RCVLOWAT 2024-01-25 15:44:52 -08:00
wireless wifi: nl80211: reject iftype change with mesh ID change 2024-03-06 14:53:55 +00:00
x25 net/x25: fix incorrect parameter validation in the x25_getsockopt() function 2024-03-26 18:18:27 -04:00
xdp xsk: Add truesize to skb_add_rx_frag(). 2024-03-01 13:41:53 +01:00
xfrm xfrm: set skb control buffer based on packet offload as well 2024-03-26 18:17:56 -04:00
compat.c
devres.c
Kconfig
Kconfig.debug
Makefile
socket.c net: Save and restore msg_namelen in sock_sendmsg 2024-01-03 11:37:57 +00:00
sysctl_net.c