Linux kernel stable tree
Go to file
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
arch x86/insn: Add VEX versions of VPDPBUSD, VPDPBUSDS, VPDPWSSD and VPDPWSSDS 2024-05-30 09:49:46 +02:00
block block: support to account io_ticks precisely 2024-05-30 09:49:03 +02:00
certs This update includes the following changes: 2023-11-02 16:15:30 -10:00
crypto KEYS: asymmetric: Add missing dependencies of FIPS_SIGNATURE_SELFTEST 2024-05-30 09:48:45 +02:00
Documentation media: dt-bindings: ovti,ov2680: Fix the power supply names 2024-05-30 09:49:38 +02:00
drivers net: txgbe: fix to control VLAN strip 2024-05-30 09:49:52 +02:00
fs ext4: remove the redundant folio_wait_stable() 2024-05-30 09:49:47 +02:00
include mm/ksm: fix ksm exec support for prctl 2024-05-30 09:49:45 +02:00
init rust: make mutually exclusive with CFI_CLANG 2024-05-02 16:35:25 +02:00
io_uring io_uring/net: fix sendzc lazy wake polling 2024-05-30 09:49:02 +02:00
ipc shm: Slim down dependencies 2023-12-20 19:26:31 -05:00
kernel sched/core: Fix incorrect initialization of the 'burst' parameter in cpu_max_write() 2024-05-30 09:49:51 +02:00
lib lib/test_hmm.c: handle src_pfns and dst_pfns allocation failure 2024-05-30 09:49:45 +02:00
LICENSES LICENSES: Add the copyleft-next-0.3.1 license 2022-11-08 15:44:01 +01:00
mm mm/userfaultfd: Do not place zeropages when zeropages are disallowed 2024-05-30 09:49:00 +02:00
net l2tp: fix ICMP error handling for UDP-encap sockets 2024-05-30 09:49:52 +02:00
rust rust: macros: fix soundness issue in module! macro 2024-05-17 12:14:22 +02:00
samples samples/landlock: Fix incorrect free in populate_ruleset_net 2024-05-30 09:49:49 +02:00
scripts modules: Drop the .export_symbol section from the final modules 2024-05-30 09:49:49 +02:00
security KEYS: trusted: Do not use WARN when encode fails 2024-05-25 16:28:40 +02:00
sound ALSA: hda: cs35l41: Remove Speaker ID for Lenovo Legion slim 7 16ARHA7 2024-05-30 09:49:41 +02:00
tools selftests/net/lib: no need to record ns name if it already exist 2024-05-30 09:49:50 +02:00
usr Kbuild updates for v6.8 2024-01-18 17:57:07 -08:00
virt KVM: Always flush async #PF workqueue when vCPU is being destroyed 2024-04-03 15:32:03 +02:00
.clang-format clang-format: Update with v6.7-rc4's for_each macro list 2023-12-08 23:54:38 +01:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.editorconfig Add .editorconfig file for basic formatting 2023-12-28 16:22:47 +09:00
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore Add .editorconfig file for basic formatting 2023-12-28 16:22:47 +09:00
.mailmap drm fixes for 6.8 final 2024-03-08 12:44:56 -08:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: supplement of zswap maintainers update 2024-01-25 23:52:21 -08:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS drm fixes for 6.8 final 2024-03-08 12:44:56 -08:00
Makefile Linux 6.8.11 2024-05-25 16:28:41 +02:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.