CVE-2026-64119
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
19/07/2026
Last modified:
19/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
l2tp: use list_del_rcu in l2tp_session_unhash<br />
<br />
An unprivileged local user can pin a host CPU indefinitely in<br />
l2tp_session_get_by_ifname() by issuing L2TP_CMD_SESSION_GET on<br />
L2TP_ATTR_IFNAME concurrently with L2TP_CMD_SESSION_CREATE and<br />
L2TP_CMD_SESSION_DELETE on the same tunnel. All three commands take<br />
GENL_UNS_ADMIN_PERM, so CAP_NET_ADMIN in the netns user namespace<br />
suffices; on any host that has l2tp_core loaded the trigger is<br />
reachable from a standard `unshare -Urn` sandbox.<br />
<br />
l2tp_session_unhash() removes a session from tunnel->session_list<br />
with list_del_init(), but that list is walked by<br />
l2tp_session_get_by_ifname() with list_for_each_entry_rcu() under<br />
rcu_read_lock_bh(). list_del_init() leaves the deleted entry&#39;s<br />
next/prev self-pointing; a reader that has loaded the entry and<br />
then advances pos->list.next reads &session->list, container_of()s<br />
back to the same session, and list_for_each_entry_rcu() never<br />
reaches the list head. The CPU stays in strcmp() inside the<br />
walker, with BH and preemption disabled, so RCU grace periods on<br />
the host stall behind it and the wedged thread cannot be killed<br />
(SIGKILL is delivered on syscall return).<br />
<br />
Use list_del_rcu() to match the existing list_add_rcu() in<br />
l2tp_session_register(); the deleted session remains visible to<br />
in-flight walkers with consistent next/prev pointers until<br />
kfree_rcu() in l2tp_session_free() releases it. tunnel->session_list<br />
has exactly one list_del_init() call site; the list_del_init<br />
(&session->clist) at l2tp_core.c:533 operates on the per-collision<br />
list, which is not walked under RCU. list_empty(&session->list) is<br />
not used anywhere in net/l2tp/ after the unhash point, so dropping<br />
the post-delete self-init is safe; the fix has no userspace-visible<br />
behavior change.



