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

dmaengine: Fix device kref underflow in dma_chan_put()

dma_chan_get() takes chan->device->ref only on the slow path:

/* no kref on fast path */
if (chan->client_count) {
__module_get(owner);
chan->client_count++;
return 0;
}
if (!try_module_get(owner))
return -ENODEV;
if (!dma_device_get(chan->device)) { // calls kref_get_unless_zero()

dma_chan_put() drops the ref unconditionally, so every fast-path
get/put pair drops one extra device reference.

The bug fires when two conditions hold together: a non-private
provider has a persistent client holding chan->client_count > 0
and another client cycles dmaengine_get()/dmaengine_put().
When the kref hits zero, the subsequent dma_find_channel() returns
NULL even though the provider module is still loaded.

Fix this by dropping device->ref only on the last put, matching the
single slow-path get.
Published: 2026-10-06
Score: 5.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Local Denial of Service
Action: Apply Patch
AI Analysis

Impact

The bug in the dmaengine subsystem causes the device reference counter to underflow when a fast‑path dma_chan_get() is followed by a dma_chan_put() that always drops the reference. This mismatch leaves the device’s reference count negative, which can make a subsequent dma_find_channel() call return NULL while the provider module remains loaded, leading to a null‑pointer dereference and a kernel crash. The effect is a denial of service that terminates the kernel, interrupting all running processes on the affected system.

Affected Systems

Linux kernel versions that contain the legacy dmaengine implementation before the reference‑counting fix are vulnerable. The vendor listing indicates the issue is present across all Linux releases that ship the unpatched dmaengine code. Any distribution using a kernel with the vulnerable dmaengine source should verify that the commit correcting the kref underflow has been applied.

Risk and Exploitability

The EPSS score is < 1%, indicating a very low but non‑zero probability of exploitation. The CVSS score of 5.5 denotes medium severity. The vulnerability is not included in the CISA KEV catalog. Based on the description, it is inferred that the attacker would need local kernel privilege or privileged DMA access and the presence of a non‑private provider with a persistent client to trigger the conditions. When the conditions for reference underflow are met, the risk is a potential local denial of service.

Generated by OpenCVE AI on October 11, 2026 at 04:52 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel patch that corrects dma_chan_put() reference counting logic.
  • Upgrade to a kernel version that includes the fix.
  • If an immediate upgrade is not possible, restrict or disable DMA engines that are not required for your workload and monitor for kernel panics or unexpected crashes.

Generated by OpenCVE AI on October 11, 2026 at 04:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4841-1 linux security update
Debian DLA Debian DLA DLA-4850-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6568-1 linux security update
History

Sun, 11 Oct 2026 03:00:00 +0000

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

Sun, 11 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-911
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.5, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Low


Tue, 06 Oct 2026 19:45:00 +0000

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

Tue, 06 Oct 2026 09:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: dmaengine: Fix device kref underflow in dma_chan_put() dma_chan_get() takes chan->device->ref only on the slow path: /* no kref on fast path */ if (chan->client_count) { __module_get(owner); chan->client_count++; return 0; } if (!try_module_get(owner)) return -ENODEV; if (!dma_device_get(chan->device)) { // calls kref_get_unless_zero() dma_chan_put() drops the ref unconditionally, so every fast-path get/put pair drops one extra device reference. The bug fires when two conditions hold together: a non-private provider has a persistent client holding chan->client_count > 0 and another client cycles dmaengine_get()/dmaengine_put(). When the kref hits zero, the subsequent dma_find_channel() returns NULL even though the provider module is still loaded. Fix this by dropping device->ref only on the last put, matching the single slow-path get.
Title dmaengine: Fix device kref underflow in dma_chan_put()
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-10-19T09:17:55.263Z

Reserved: 2026-09-25T10:25:14.343Z

Link: CVE-2026-98344

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-06T09:18:27.323

Modified: 2026-10-19T10:18:36.827

Link: CVE-2026-98344

cve-icon Redhat

Severity : Low

Publid Date: 2026-10-06T00:00:00Z

Links: CVE-2026-98344 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-11T05:00:12Z

Weaknesses
  • CWE-911

    Improper Update of Reference Count