CVE-2026-31579
Severity CVSS v4.0:
Pending analysis
Type:
CWE-476
NULL Pointer Dereference
Publication date:
24/04/2026
Last modified:
27/04/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
wireguard: device: use exit_rtnl callback instead of manual rtnl_lock in pre_exit<br />
<br />
wg_netns_pre_exit() manually acquires rtnl_lock() inside the<br />
pernet .pre_exit callback. This causes a hung task when another<br />
thread holds rtnl_mutex - the cleanup_net workqueue (or the<br />
setup_net failure rollback path) blocks indefinitely in<br />
wg_netns_pre_exit() waiting to acquire the lock.<br />
<br />
Convert to .exit_rtnl, introduced in commit 7a60d91c690b ("net:<br />
Add ->exit_rtnl() hook to struct pernet_operations."), where the<br />
framework already holds RTNL and batches all callbacks under a<br />
single rtnl_lock()/rtnl_unlock() pair, eliminating the contention<br />
window.<br />
<br />
The rcu_assign_pointer(wg->creating_net, NULL) is safe to move<br />
from .pre_exit to .exit_rtnl (which runs after synchronize_rcu())<br />
because all RCU readers of creating_net either use maybe_get_net()<br />
- which returns NULL for a dying namespace with zero refcount - or<br />
access net->user_ns which remains valid throughout the entire<br />
ops_undo_list sequence.<br />
<br />
[ Jason: added __net_exit and __read_mostly annotations that were missing. ]
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.18.24 (excluding) | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 6.19.14 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 7.0 (including) | 7.0.1 (excluding) |
To consult the complete list of CPE names with products and versions, see this page



