CVE-2025-39871

dmaengine: idxd: Remove improper idxd_free

State
Published
Severity
Not scored
Published
Sep 23, 2025
Updated
Oct 15, 2026
Reserved
Apr 16, 2025

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 68ac5a01f635b3791196fd1c39bc48497252c36f to before 24414bbcb37e1af95190af36c21ae51d497e1a9eAffected
  • d2d05fd0fc95c4defed6f7b87550e20e8baa1d97 to before 0e95ee7f532b21206fe3f1c4054002b0d21e3b9cAffected
  • 21f9f5cd9a0c75084d4369ba0b8c4f695c41dea7 to before dd7a7e43269711d757fc260b0bbdf7138f75de11Affected
  • d5449ff1b04dfe9ed8e455769aa01e4c2ccf6805 to before da4fbc1488a4cec6748da685181ee4449a878dacAffected
  • d5449ff1b04dfe9ed8e455769aa01e4c2ccf6805 to before f41c538881eec4dcf5961a242097d447f848cda6Affected
  • 2b7a961cea0e5b65afda911f76d14fec5c98d024Affected
  • 6.1.140 to before 6.1.160Affected
  • 6.6.92 to before 6.6.107Affected
  • 6.12.30 to before 6.12.48Affected
  • 6.14.8 to before 6.15Affected
LinuxLinux
  • 6.15Affected
  • before 6.15Not affected
  • 6.1.160 through 6.1.*Not affected
  • 6.6.107 through 6.6.*Not affected
  • 6.12.48 through 6.12.*Not affected
  • 6.16.8 through 6.16.*Not affected
  • 6.17 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.