CVE-2025-39871CWE-416

CVE-2025-39871

High · published September 23, 2025

CVSS v3.1
7.8
EPSS
0%
Percentile
4.1
In the wild
Unconfirmed
What it is

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

dmaengine: idxd: Remove improper idxd_free

The call to idxd_free() introduces a duplicate put_device() leading to a

reference count underflow:

refcount_t: underflow; use-after-free.

WARNING: CPU: 15 PID: 4428 at lib/refcount.c:28 refcount_warn_saturate+0xbe/0x110

...

Call Trace:

<TASK>

idxd_remove+0xe4/0x120 [idxd]

pci_device_remove+0x3f/0xb0

device_release_driver_internal+0x197/0x200

driver_detach+0x48/0x90

bus_remove_driver+0x74/0xf0

pci_unregister_driver+0x2e/0xb0

idxd_exit_module+0x34/0x7a0 [idxd]

__do_sys_delete_module.constprop.0+0x183/0x280

do_syscall_64+0x54/0xd70

entry_SYSCALL_64_after_hwframe+0x76/0x7e

The idxd_unregister_devices() which is invoked at the very beginning of

idxd_remove(), already takes care of the necessary put_device() through the

following call path:

idxd_unregister_devices() -> device_unregister() -> put_device()

In addition, when CONFIG_DEBUG_KOBJECT_RELEASE is enabled, put_device() may

trigger asynchronous cleanup via schedule_delayed_work(). If idxd_free() is

called immediately after, it can result in a use-after-free.

Remove the improper idxd_free() to avoid both the refcount underflow and

potential memory corruption during module unload.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00154 · 4.1th percentile
Weakness
CWE-416 · Use After Free
Published
2025-09-23T10:15Z
Affected products (12)
ProductVersionsFixed in
linux/linux_kernel≥ 6.1.140, < 6.26.2
linux/linux_kernel≥ 6.6.92, < 6.6.1076.6.107
linux/linux_kernel≥ 6.12.30, < 6.12.486.12.48
linux/linux_kernel≥ 6.14.8, < 6.156.15
linux/linux_kernel≥ 6.15.1, < 6.16.86.16.8
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (7)
EPSS history
Timeline
  • 23 SEP 06:00Z
    dmaengine: idxd: Remove improper idxd_free
    cvelistv5