linux-stable/net/ipv4
Paolo Abeni c1b5dee463 net/ulp: prevent ULP without clone op from entering the LISTEN status
[ Upstream commit 2c02d41d71 ]

When an ULP-enabled socket enters the LISTEN status, the listener ULP data
pointer is copied inside the child/accepted sockets by sk_clone_lock().

The relevant ULP can take care of de-duplicating the context pointer via
the clone() operation, but only MPTCP and SMC implement such op.

Other ULPs may end-up with a double-free at socket disposal time.

We can't simply clear the ULP data at clone time, as TLS replaces the
socket ops with custom ones assuming a valid TLS ULP context is
available.

Instead completely prevent clone-less ULP sockets from entering the
LISTEN status.

Fixes: 734942cc4e ("tcp: ULP infrastructure")
Reported-by: slipper <slipper.alive@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Link: https://lore.kernel.org/r/4b80c3d1dbe3d0ab072f80450c202d9bc88b4b03.1672740602.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-01-12 12:00:42 +01:00
..
bpfilter
netfilter netfilter: conntrack: Fix data-races around ct mark 2022-12-02 17:43:04 +01:00
Kconfig tcp: configurable source port perturb table size 2022-12-02 17:43:16 +01:00
Makefile
af_inet.c net: Remove the obsolte u64_stats_fetch_*_irq() users (net). 2022-12-31 13:26:12 +01:00
ah4.c net: ipv4: fix clang -Wformat warnings 2022-07-12 12:58:53 +02:00
arp.c net: ipv4: new arp_accept option to accept garp only if in-network 2022-07-15 18:55:49 -07:00
bpf_tcp_ca.c bpf: Switch to new kfunc flags infrastructure 2022-07-21 20:59:42 -07:00
cipso_ipv4.c cipso: Fix data-races around sysctl. 2022-07-08 12:10:33 +01:00
datagram.c udp: Update reuse->has_conns under reuseport_lock. 2022-10-29 10:08:33 +02:00
devinet.c net: Fix data-races around sysctl_devconf_inherit_init_net. 2022-08-24 13:46:58 +01:00
esp4.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-07-21 13:03:39 -07:00
esp4_offload.c xfrm: replay: Fix ESN wrap around for GSO 2022-12-02 17:43:02 +01:00
fib_frontend.c ipv4: Fix incorrect route flushing when table ID 0 is used 2022-12-14 11:41:04 +01:00
fib_lookup.h
fib_notifier.c
fib_rules.c ipv4: remove unnecessary type castings 2022-04-30 15:12:58 +01:00
fib_semantics.c ipv4: Fix incorrect route flushing when source address is deleted 2022-12-14 11:41:04 +01:00
fib_trie.c ipv4: Fix error return code in fib_table_insert() 2022-12-02 17:43:08 +01:00
fou.c
gre_demux.c
gre_offload.c
icmp.c ip: Fix data-races around sysctl_ip_no_pmtu_disc. 2022-07-15 11:49:55 +01:00
igmp.c igmp: Fix data-races around sysctl_igmp_qrv. 2022-07-18 12:21:54 +01:00
inet_connection_sock.c net/ulp: prevent ULP without clone op from entering the LISTEN status 2023-01-12 12:00:42 +01:00
inet_diag.c net: inet: Retire port only listening_hash 2022-05-12 16:52:18 -07:00
inet_fragment.c ipv4: remove unnecessary type castings 2022-04-30 15:12:58 +01:00
inet_hashtables.c tcp: configurable source port perturb table size 2022-12-02 17:43:16 +01:00
inet_timewait_sock.c tcp: Fix a data-race around sysctl_max_tw_buckets. 2022-07-13 12:56:49 +01:00
inetpeer.c inetpeer: Fix data-races around sysctl. 2022-07-08 12:10:33 +01:00
ip_forward.c ip: Fix data-races around sysctl_ip_fwd_update_priority. 2022-07-15 11:49:55 +01:00
ip_fragment.c
ip_gre.c ip_gre: do not report erspan version on GRE interface 2022-12-14 11:41:02 +01:00
ip_input.c xfrm: fix "disable_policy" on ipv4 early demux 2022-12-02 17:43:02 +01:00
ip_options.c
ip_output.c net: Fix data-races around sysctl_[rw]mem_(max|default). 2022-08-24 13:46:57 +01:00
ip_sockglue.c net: Fix data-races around sysctl_optmem_max. 2022-08-24 13:46:57 +01:00
ip_tunnel.c ip_tunnel: Respect tunnel key's "flow_flags" in IP tunnels 2022-08-18 21:18:28 +02:00
ip_tunnel_core.c tunnels: do not assume mac header is set in skb_tunnel_check_pmtu() 2022-06-27 11:50:30 +01:00
ip_vti.c
ipcomp.c
ipconfig.c Driver core / kernfs changes for 6.0-rc1 2022-08-04 11:31:20 -07:00
ipip.c
ipmr.c ipmr: Always call ip{,6}_mr_forward() from RCU read-side critical section 2022-09-20 08:22:15 -07:00
ipmr_base.c ipmr: adopt rcu_read_lock() in mr_dump() 2022-06-24 11:34:38 +01:00
metrics.c
netfilter.c netfilter: Use l3mdev flow key when re-routing mangled packets 2022-05-16 13:03:29 +02:00
netlink.c
nexthop.c nh: fix scope used to find saddr when adding non gw nh 2022-11-04 00:00:33 +09:00
ping.c net: Return errno in sk->sk_prot->get_port(). 2022-12-31 13:26:00 +01:00
proc.c ip: Fix data-races around sysctl_ip_default_ttl. 2022-07-15 11:49:55 +01:00
protocol.c
raw.c raw: fix a typo in raw_icmp_error() 2022-06-24 22:48:33 -07:00
raw_diag.c raw: complete rcu conversion 2022-06-21 11:38:29 +02:00
route.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next 2022-07-25 13:25:39 +01:00
syncookies.c mptcp: remove MPTCP 'ifdef' in TCP SYN cookies 2023-01-07 11:15:48 +01:00
sysctl_net_ipv4.c ip: Fix data-races around sysctl_ip_prot_sock. 2022-07-20 10:14:49 +01:00
tcp.c tcp: prohibit TCP_REPAIR_OPTIONS if data was already sent 2022-11-16 10:03:55 +01:00
tcp_bbr.c bpf: Switch to new kfunc flags infrastructure 2022-07-21 20:59:42 -07:00
tcp_bic.c
tcp_bpf.c bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect 2022-12-31 13:26:06 +01:00
tcp_cdg.c tcp: cdg: allow tcp_cdg_release() to be called multiple times 2022-11-26 09:27:54 +01:00
tcp_cong.c
tcp_cubic.c bpf: Switch to new kfunc flags infrastructure 2022-07-21 20:59:42 -07:00
tcp_dctcp.c bpf: Switch to new kfunc flags infrastructure 2022-07-21 20:59:42 -07:00
tcp_dctcp.h
tcp_diag.c
tcp_fastopen.c tcp: Fix data-races around sysctl_tcp_fastopen_blackhole_timeout. 2022-07-18 12:21:54 +01:00
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c tcp: fix indefinite deferral of RTO with SACK reneging 2022-11-04 00:00:31 +09:00
tcp_ipv4.c dccp/tcp: Reset saddr on failure after inet6?_hash_connect(). 2022-12-02 17:43:08 +01:00
tcp_lp.c
tcp_metrics.c tcp: Fix data-races around sysctl_tcp_no_ssthresh_metrics_save. 2022-07-22 12:06:17 +01:00
tcp_minisocks.c tcp: Fix a data-race around sysctl_tcp_abort_on_overflow. 2022-07-20 10:14:50 +01:00
tcp_nv.c
tcp_offload.c
tcp_output.c tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited 2022-10-21 12:38:19 +02:00
tcp_rate.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-04-28 13:02:01 -07:00
tcp_recovery.c tcp: Fix data-races around sysctl_tcp_recovery. 2022-07-20 10:14:50 +01:00
tcp_scalable.c
tcp_timer.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-07-21 13:03:39 -07:00
tcp_ulp.c net/ulp: prevent ULP without clone op from entering the LISTEN status 2023-01-12 12:00:42 +01:00
tcp_vegas.c
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tunnel4.c
udp.c net: Return errno in sk->sk_prot->get_port(). 2022-12-31 13:26:00 +01:00
udp_bpf.c net: remove SOCK_SUPPORT_ZC from sockmap 2022-11-10 18:17:35 +01:00
udp_diag.c
udp_impl.h
udp_offload.c
udp_tunnel_core.c net/tunnel: wait until all sk_user_data reader finish before releasing the sock 2022-12-31 13:26:13 +01:00
udp_tunnel_nic.c
udp_tunnel_stub.c
udplite.c net: add per_cpu_fw_alloc field to struct proto 2022-06-10 16:21:26 -07:00
xfrm4_input.c
xfrm4_output.c
xfrm4_policy.c net: rename reference+tracking helpers 2022-06-09 21:52:55 -07:00
xfrm4_protocol.c net: xfrm: unexport __init-annotated xfrm4_protocol_init() 2022-06-08 10:10:13 -07:00
xfrm4_state.c
xfrm4_tunnel.c