linux-stable/net
Tom Parkin a460592e43 l2tp: fix ICMP error handling for UDP-encap sockets
[ Upstream commit 6e828dc60e ]

Since commit a36e185e8c
("udp: Handle ICMP errors for tunnels with same destination port on both endpoints")
UDP's handling of ICMP errors has allowed for UDP-encap tunnels to
determine socket associations in scenarios where the UDP hash lookup
could not.

Subsequently, commit d26796ae58
("udp: check udp sock encap_type in __udp_lib_err")
subtly tweaked the approach such that UDP ICMP error handling would be
skipped for any UDP socket which has encapsulation enabled.

In the case of L2TP tunnel sockets using UDP-encap, this latter
modification effectively broke ICMP error reporting for the L2TP
control plane.

To a degree this isn't catastrophic inasmuch as the L2TP control
protocol defines a reliable transport on top of the underlying packet
switching network which will eventually detect errors and time out.

However, paying attention to the ICMP error reporting allows for more
timely detection of errors in L2TP userspace, and aids in debugging
connectivity issues.

Reinstate ICMP error handling for UDP encap L2TP tunnels:

 * implement struct udp_tunnel_sock_cfg .encap_err_rcv in order to allow
   the L2TP code to handle ICMP errors;

 * only implement error-handling for tunnels which have a managed
   socket: unmanaged tunnels using a kernel socket have no userspace to
   report errors back to;

 * flag the error on the socket, which allows for userspace to get an
   error such as -ECONNREFUSED back from sendmsg/recvmsg;

 * pass the error into ip[v6]_icmp_error() which allows for userspace to
   get extended error information via. MSG_ERRQUEUE.

Fixes: d26796ae58 ("udp: check udp sock encap_type in __udp_lib_err")
Signed-off-by: Tom Parkin <tparkin@katalix.com>
Link: https://lore.kernel.org/r/20240513172248.623261-1-tparkin@katalix.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-05-30 09:49:52 +02:00
..
6lowpan net: fill in MODULE_DESCRIPTION()s for 6LoWPAN 2024-02-09 14:12:01 -08:00
9p 9p: Fix read/write debug statements to report server reply 2024-04-10 16:38:09 +02:00
802 net: fill in MODULE_DESCRIPTION()s under net/802* 2023-10-28 11:29:28 +01:00
8021q net: gro: fix udp bad offset in socket lookup by adding {inner_}network_offset to napi_gro_cb 2024-05-17 12:14:34 +02:00
appletalk net: remove SOCK_DEBUG leftovers 2023-12-26 20:31:01 +00:00
atm net: fill in MODULE_DESCRIPTION()s for mpoa 2024-02-09 14:12:01 -08:00
ax25 ax25: Fix reference count leak issue of net_device 2024-05-30 09:49:27 +02:00
batman-adv batman-adv: Avoid infinite loop trying to resize local TT 2024-04-17 11:23:24 +02:00
bluetooth Bluetooth: hci_core: Fix not handling hdev->le_num_of_adv_sets=1 2024-05-30 09:49:31 +02:00
bpf bpf: Fix dtor CFI 2023-12-15 16:25:55 -08:00
bridge net: bridge: mst: fix vlan use-after-free 2024-05-30 09:49:50 +02:00
caif net: fill in MODULE_DESCRIPTION()s for CAIF 2024-01-05 08:06:35 -08:00
can can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER) 2024-02-14 13:53:03 +01:00
ceph libceph: init the cursor when preparing sparse read in msgr2 2024-03-06 12:43:01 +01:00
core net: give more chances to rcu in netdev_wait_allrefs_any() 2024-05-30 09:49:17 +02:00
dcb net: dcb: choose correct policy to parse DCB_ATTR_BCN 2023-08-01 21:07:46 -07:00
dccp net: remove SOCK_DEBUG leftovers 2023-12-26 20:31:01 +00:00
devlink devlink: fix port new reply cmd type 2024-03-26 18:17:36 -04:00
dns_resolver Networking changes for 6.8. 2024-01-11 10:07:29 -08:00
dsa net: dsa: fix netdev_priv() dereference before check on non-DSA netdevice events 2024-01-11 16:33:52 -08:00
ethernet ethernet: Add helper for assigning packet type when dest address does not match device address 2024-05-02 16:35:30 +02:00
ethtool ethtool: netlink: Add missing ethnl_ops_begin/complete 2024-01-18 13:21:06 +01:00
handshake net/handshake: Fix handshake_req_destroy_test1 2024-02-08 18:32:29 -08:00
hsr hsr: Simplify code for announcing HSR nodes timer setup 2024-05-17 12:14:54 +02:00
ieee802154 mac802154: Avoid new associations while disassociating 2023-12-15 11:14:57 +01:00
ife net: sched: ife: fix potential use-after-free 2023-12-15 10:50:18 +00:00
ipv4 tcp: avoid premature drops in tcp_add_backlog() 2024-05-30 09:49:16 +02:00
ipv6 ipv6: sr: fix invalid unregister error path 2024-05-30 09:49:26 +02:00
iucv net/iucv: fix the allocation size of iucv_path_table array 2024-02-16 09:25:09 +00:00
kcm net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function 2024-03-26 18:16:57 -04:00
key net: fill in MODULE_DESCRIPTION()s for af_key 2024-02-09 14:12:01 -08:00
l2tp l2tp: fix ICMP error handling for UDP-encap sockets 2024-05-30 09:49:52 +02:00
l3mdev
lapb
llc llc: call sock_orphan() at release time 2024-01-30 13:49:09 +01:00
mac80211 wifi: mac80211: don't select link ID if not provided in scan request 2024-05-30 09:49:05 +02:00
mac802154 mac802154: fix llsec key resources release in mac802154_llsec_key_del 2024-04-03 15:32:15 +02:00
mctp net: mctp: copy skb ext data when fragmenting 2024-03-26 18:16:49 -04:00
mpls net: mpls: error out if inner headers are not set 2024-04-13 13:10:12 +02:00
mptcp mptcp: fix full TCP keep-alive support 2024-05-30 09:49:28 +02:00
ncsi net/ncsi: Add NC-SI 1.2 Get MC MAC Address command 2023-11-18 15:00:51 +00:00
netfilter netfilter: nf_tables: honor table dormant flag from netdev release event path 2024-05-02 16:35:21 +02:00
netlabel calipso: fix memory leak in netlbl_calipso_add_pass() 2023-12-07 14:23:12 -05:00
netlink netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter 2024-02-22 18:56:09 -08:00
netrom netrom: fix possible dead-lock in nr_rt_ioctl() 2024-05-30 09:49:50 +02:00
nfc nfc: nci: Fix kcov check in nci_rx_work() 2024-05-17 12:14:53 +02:00
nsh nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment(). 2024-05-17 12:14:29 +02:00
openvswitch net: openvswitch: fix overwriting ct original tuple for ICMPv6 2024-05-30 09:49:26 +02:00
packet af_packet: do not call packet_read_pending() from tpacket_destruct_skb() 2024-05-30 09:49:51 +02:00
phonet phonet: fix rtm_phonet_notify() skb allocation 2024-05-17 12:14:53 +02:00
psample genetlink: Use internal flags for multicast groups 2023-12-29 08:43:59 +00:00
qrtr net: qrtr: ns: Fix module refcnt 2024-05-30 09:49:50 +02:00
rds net/rds: fix possible cp null dereference 2024-04-10 16:38:02 +02:00
rfkill Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-12-21 22:17:23 +01:00
rose net/rose: fix races in rose_kill_by_device() 2023-12-15 11:59:53 +00:00
rxrpc rxrpc: Only transmit one ACK per jumbo packet received 2024-05-17 12:14:54 +02:00
sched net/sched: Fix mirred deadlock on device recursion 2024-04-27 17:12:53 +02:00
sctp net: sctp: fix skb leak in sctp_inq_free() 2024-02-15 07:34:52 -08:00
smc net/smc: fix neighbour and rtable leak in smc_ib_find_route() 2024-05-17 12:14:55 +02:00
strparser
sunrpc SUNRPC: Fix gss_free_in_token_pages() 2024-05-30 09:49:48 +02:00
switchdev net: bridge: switchdev: Skip MDB replays of deferred events on offload 2024-02-16 09:36:37 +00:00
tipc tipc: fix UAF in error path 2024-05-17 12:15:03 +02:00
tls tls: fix lockless read of strp->msg_ready in ->poll 2024-05-02 16:35:22 +02:00
unix af_unix: Fix data races in unix_release_sock/unix_stream_sendmsg 2024-05-30 09:49:25 +02:00
vmw_vsock vsock/virtio: fix packet delivery to tap device 2024-04-10 16:38:03 +02:00
wireless wifi: nl80211: Avoid address calculations via out of bounds array indexing 2024-05-30 09:49:20 +02:00
x25 net/x25: fix incorrect parameter validation in the x25_getsockopt() function 2024-03-26 18:16:57 -04:00
xdp xsk: validate user input for XDP_{UMEM|COMPLETION}_FILL_RING 2024-04-17 11:23:28 +02:00
xfrm xfrm: Preserve vlan tags for transport mode software GRO 2024-05-17 12:14:51 +02:00
compat.c file: stop exposing receive_fd_user() 2023-12-12 14:24:14 +01:00
devres.c
Kconfig bpfilter: remove bpfilter 2024-01-04 10:23:10 -08:00
Kconfig.debug
Makefile bpfilter: remove bpfilter 2024-01-04 10:23:10 -08:00
socket.c vfs-6.8.iov_iter 2024-01-08 11:43:04 -08:00
sysctl_net.c sysctl: Add size to register_net_sysctl function 2023-08-15 15:26:17 -07:00