CVE-2025-39870: dmaengine: idxd: Fix double free in idxd_setup_wqs()
In the Linux kernel, the following vulnerability has been resolved:
dmaengine: idxd: Fix double free in idxd_setup_wqs()
The clean up in idxd_setup_wqs() has had a couple bugs because the error
handling is a bit subtle. It's simpler to just re-write it in a cleaner
way. The issues here are:
1) If "idxd->max_wqs" is <= 0 then we call put_device(conf_dev) when
"conf_dev" hasn't been initialized.
2) If kzalloc_node() fails then again "conf_dev" is invalid. It's
either uninitialized or it points to the "conf_dev" from the
previous iteration so it leads to a double free.
It's better to free partial loop iterations within the loop and then
the unwinding at the end can handle whole loop iterations. I also
renamed the labels to describe what the goto does and not where the goto
was located.
Security readout for executives and security teams
Plain-English summary
This is a Linux kernel memory-management bug in the idxd dmaengine driver setup path. Under specific setup failure conditions, cleanup can reference an invalid device object or free it twice. The sources confirm a resolved kernel bug, but provide no CVSS score, exploit evidence, or complete impact statement.
Executive priority
Treat this as a kernel maintenance item requiring timely patch planning, not emergency response based on current evidence. Priority should rise for systems using affected kernel branches and idxd functionality, especially where kernel instability would affect critical services.
Technical view
CVE-2025-39870 fixes flawed error unwinding in idxd_setup_wqs(). If idxd->max_wqs <= 0 or kzalloc_node() fails, conf_dev may be uninitialized, stale from a prior loop iteration, or freed twice. The fix rewrites cleanup handling for partial and complete loop iterations.
Likely exposure
Exposure appears limited to Linux systems using affected kernels with the idxd dmaengine code present and reachable. The provided version data is incomplete for precise fleet matching, so kernel vendor advisories and package metadata should drive final exposure decisions.
Exploitation context
The bundle does not show active exploitation, public exploit availability, or KEV listing. Triggerability depends on kernel configuration and idxd setup error paths, which the provided sources do not fully describe.
Researcher notes
The evidence supports a cleanup-path double free or invalid put_device() condition, but not exploitability class, privileges required, or reachable attack surface. Validate by source-level diffing the referenced stable commits and comparing downstream vendor backports.
Mitigation direction
Apply vendor kernel updates that include the referenced stable fixes.
For Debian LTS, review and apply the Debian advisory update if applicable.
Prioritize hosts with idxd-related kernel support enabled or hardware dependency.
If no package is available, follow kernel vendor guidance for backported fixes.
Validation and detection
Inventory Linux kernel versions and vendor package revisions across affected hosts.
Check whether installed kernels include the referenced stable commits or vendor backports.
Review kernel configuration and loaded modules for idxd dmaengine exposure.
Confirm Debian systems against the listed Debian LTS advisory.
Document any systems awaiting vendor guidance or maintenance windows.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-39870 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
0CVSS vectors
3Timeline events
1ADP providers
7Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Sep 23, 2025, 06:00 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.