HIGH Introduced in 6.4
module DupReq UAF
CVE-2026-90291
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.0HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: module/dups: Fix use-after-free in kmod_dup_req lifetime handling The kmod dups code uses RCU to ensure that a kmod_dup_req instance is freed only after it is no longer referenced. When releasing an instance, the kmod_dup_request_delete() function removes the kmod_dup_req from the dup_kmod_reqs list, waits via synchronize_rcu() and finally frees it. However, this doesn't work correctly because parallel users referencing the instance in kmod_dup_request_exists_wait() don't enter an RCU read-side critical section. This can result in a use-after-free. The kmod_dup_request_exists_wait() function may need to hold a valid reference to a kmod_dup_req instance across a blocking wait until the corresponding modprobe command completes. This makes it unsuitable for RCU. Fix the issue by changing the lifecycle management of kmod_dup_req to use reference counting.
02KernelScan AI Analysis
Risk summary
A use-after-free in the kernel module auto-loading deduplication code allows a local unprivileged attacker to corrupt kernel heap memory by racing concurrent module load requests. The bug requires the kernel to be built with the duplicate module request debugging option (CONFIG_MODULE_DEBUG_AUTOLOAD_DUPS). Successful exploitation could lead to privilege escalation or a kernel crash.
Vulnerability analysis
The kernel's module auto-loading deduplication feature can free a tracking object while another thread is still using it, because the code that waits for a module load to complete does not properly protect the object from being freed during that wait. The fix replaces this broken lifetime management with explicit reference counting, so the object is freed only when no thread holds a reference to it. Any local unprivileged user who can trigger automatic module loading—for example by requesting an uncommon socket protocol or filesystem type—can reach this code path, but only when the kernel is compiled with the duplicate module request debugging option enabled.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 6.4 | 6.12.110 | 2c85e0fb528e |
| 6.18 | 6.4 | 6.18.52 | b2709aad7599 |
| 6.6 | 6.4 | 6.6.160 | a3205bd1f218 |
| 7.2 | 6.4 | 7.2.6 | cd2396fc9684 |
| mainline | 6.4 | 7.3 | 5eecb11b543f |
| cip/6.12 | 6.4 | 6.12.111-cip32 | 2c85e0fb528e |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |