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

dmaengine: idxd: fix double free of wq, engine, and group structs

The release callbacks for wq, engine, and group devices
(idxd_conf_wq_release, idxd_conf_engine_release,
idxd_conf_group_release) each call kfree() on the enclosing struct.
The setup error paths and cleanup functions also call kfree()
explicitly after put_device(), producing a double free whenever
put_device() drops the reference count to zero and fires the release.

In the setup functions, device_initialize() is called before
device_add(), so the reference count is exactly 1 at the error sites.
put_device() unconditionally fires the release, which frees the struct;
the subsequent explicit kfree() then operates on freed memory.

For idxd_setup_wqs(), the wq release callback also owns opcap_bmap
and wqcfg. The error unwind additionally freed those fields explicitly
before calling put_device(), causing further double frees on both.

Remove the redundant explicit kfree() calls from all setup error paths
and cleanup functions for wq, engine, and group structs, delegating
sole ownership of those allocations to the release callbacks.
Published: 2026-08-28
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The idxd driver in the Linux kernel contains a defect where release callbacks for work queue, engine, and group structures each free the enclosing structure. During error handling and cleanup paths, an explicit kfree is also called after put_device() triggers the release callback. If put_device() drops the reference count to zero, the release callback frees the structure first and the subsequent explicit kfree operates on freed memory, causing a double free. Double free can corrupt kernel memory, potentially leading to a crash or a use‑after‑free that a malicious local attacker could exploit to execute code with kernel privileges. The likely attack vector is local interaction with the idxd device when inducing an error or a cleanup condition.

Affected Systems

Any Linux kernel build that includes the buggy idxd code is affected. All distributions shipping such kernels are potentially at risk until the patch that removes the redundant kfree calls is applied. No specific kernel version range is given, so the vulnerability may exist in current and future kernel releases that incorporate the flawed code.

Risk and Exploitability

There is no assigned CVSS or EPSS score, and the vulnerability is not catalogued in CISA KEV, indicating no known active exploitation. However, double free flaws are well known to enable kernel memory corruption. A local attacker with sufficient privileges to interact with idxd devices could potentially trigger the double free path, leading to a system crash or, if the attacker can manipulate the corrupted memory, to privilege escalation. The exploitation conditions therefore require the ability to invoke the driver’s error or cleanup logic, which is typically available to local users with device access. The lack of an EPSS score suggests a lower probability of widespread exploitation, but the severity of a successful exploit remains high.

Generated by OpenCVE AI on August 28, 2026 at 12:26 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel update containing the idxd driver fix that removes the redundant kfree calls.
  • If an update is unavailable, prevent the driver from loading by removing it with modprobe -r idxd or by blacklisting it in modprobe.d, thereby eliminating the double free risk.
  • If driver functionality is required, recompile the kernel without idxd support or restrict access to the device nodes and physical hardware, so that the bug cannot be triggered.

Generated by OpenCVE AI on August 28, 2026 at 12:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 12:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-415
CWE-416

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: dmaengine: idxd: fix double free of wq, engine, and group structs The release callbacks for wq, engine, and group devices (idxd_conf_wq_release, idxd_conf_engine_release, idxd_conf_group_release) each call kfree() on the enclosing struct. The setup error paths and cleanup functions also call kfree() explicitly after put_device(), producing a double free whenever put_device() drops the reference count to zero and fires the release. In the setup functions, device_initialize() is called before device_add(), so the reference count is exactly 1 at the error sites. put_device() unconditionally fires the release, which frees the struct; the subsequent explicit kfree() then operates on freed memory. For idxd_setup_wqs(), the wq release callback also owns opcap_bmap and wqcfg. The error unwind additionally freed those fields explicitly before calling put_device(), causing further double frees on both. Remove the redundant explicit kfree() calls from all setup error paths and cleanup functions for wq, engine, and group structs, delegating sole ownership of those allocations to the release callbacks.
Title dmaengine: idxd: fix double free of wq, engine, and group structs
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-28T06:53:02.829Z

Reserved: 2026-08-26T14:34:25.786Z

Link: CVE-2026-80698

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:55.297

Modified: 2026-08-28T08:16:55.297

Link: CVE-2026-80698

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T12:30:17Z

Weaknesses