CVE-2026-31579CWE-476

CVE-2026-31579

Medium · published April 24, 2026

CVSS v3.1
5.5
EPSS
0%
Percentile
5.0
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

wireguard: device: use exit_rtnl callback instead of manual rtnl_lock in pre_exit

wg_netns_pre_exit() manually acquires rtnl_lock() inside the

pernet .pre_exit callback. This causes a hung task when another

thread holds rtnl_mutex - the cleanup_net workqueue (or the

setup_net failure rollback path) blocks indefinitely in

wg_netns_pre_exit() waiting to acquire the lock.

Convert to .exit_rtnl, introduced in commit 7a60d91c690b ("net:

Add ->exit_rtnl() hook to struct pernet_operations."), where the

framework already holds RTNL and batches all callbacks under a

single rtnl_lock()/rtnl_unlock() pair, eliminating the contention

window.

The rcu_assign_pointer(wg->creating_net, NULL) is safe to move

from .pre_exit to .exit_rtnl (which runs after synchronize_rcu())

because all RCU readers of creating_net either use maybe_get_net()

- which returns NULL for a dying namespace with zero refcount - or

access net->user_ns which remains valid throughout the entire

ops_undo_list sequence.

[ Jason: added __net_exit and __read_mostly annotations that were missing. ]

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00162 · 5.0th percentile
Weakness
CWE-476 · NULL Pointer Dereference
Published
2026-04-24T19:16Z
Affected products (3)
ProductVersionsFixed in
linux/linux_kernel< 6.18.246.18.24
linux/linux_kernel≥ 6.19, < 6.19.146.19.14
linux/linux_kernel≥ 7.0, < 7.0.17.0.1
References (5)
EPSS history
Timeline
  • 24 APR 14:42Z
    wireguard: device: use exit_rtnl callback instead of manual rtnl_lock in pre_exit
    cvelistv5