CVE-2025-39871

HIGH EPSS 3.7%
Published Sep 23, 20259mo ago · Modified Jun 17, 20261w ago
7.8 CVSS 3.1
High
Find Similar
Published Sep 23, 2025 9mo ago
Last Modified Jun 17, 2026 1w ago

Description

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.

CVSS Details

Base Score
7.8
Exploitability
1.8
Impact
5.9
Vector string
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack Vector Local
Attack Complexity Low
Privileges Required Low
User Interaction None
Scope Unchanged
Confidentiality High
Integrity High
Availability High

Threat Intelligence

EPSS Exploit Probability
3.7% percentile
Exploit & Patch Status
No Known Exploit
Patch Available

Weaknesses 1

CWE-416 Use After Free Memory Safety

Affected Products 12

VendorProductVersionRange
linuxlinux_kernel*≥6.1.140  –  <6.2
linuxlinux_kernel*≥6.6.92  –  <6.6.107
linuxlinux_kernel*≥6.12.30  –  <6.12.48
linuxlinux_kernel*≥6.14.8  –  <6.15
linuxlinux_kernel*≥6.15.1  –  <6.16.8
linuxlinux_kernel6.15any
linuxlinux_kernel6.15any
linuxlinux_kernel6.17any
linuxlinux_kernel6.17any
linuxlinux_kernel6.17any
linuxlinux_kernel6.17any
linuxlinux_kernel6.17any

References 5

  • git.kernel.org https://git.kernel.org/stable/c/0e95ee7f532b21206fe3f1c4054002b0d21e3b9c
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/24414bbcb37e1af95190af36c21ae51d497e1a9e
  • git.kernel.org https://git.kernel.org/stable/c/da4fbc1488a4cec6748da685181ee4449a878dac
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/dd7a7e43269711d757fc260b0bbdf7138f75de11
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/f41c538881eec4dcf5961a242097d447f848cda6
    Patch

Remediation

  • git.kernel.org https://git.kernel.org/stable/c/0e95ee7f532b21206fe3f1c4054002b0d21e3b9c
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/da4fbc1488a4cec6748da685181ee4449a878dac
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/dd7a7e43269711d757fc260b0bbdf7138f75de11
    Patch
  • git.kernel.org https://git.kernel.org/stable/c/f41c538881eec4dcf5961a242097d447f848cda6
    Patch