CVE-2026-98343
NoneCVSS
—
EPSS
0.2%
Published
Oct 6, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel's handling of hardware data channels was fixed to stop memory from being used after it had already been released, which could otherwise cause crashes or security problems.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in dma_chan_put() and dma_release_channel() allows reading chan->device->owner after dma_device_release() has freed the dma_device and channels when the last reference is dropped.
Why it matters to the business
Potential system instability, crashes, or local privilege escalation on Linux systems performing DMA channel operations, increasing risk of denial of service or compromise in environments relying on the kernel's DMA engine.
How an attack unfolds
An attacker with local access triggers DMA channel allocation and release sequences that cause the final reference drop on the device, leading to premature freeing; subsequent reads in dma_chan_put() access freed memory, which KASAN detects as slab-use-after-free.
How to fix it
Update to a Linux kernel version containing the fix that caches the module owner in dma_chan_put() before performing the put operation; apply the patch from the dmaengine commit resolving the reference counting issue.
How to confirm the fix worked
Confirm the presence of the caching change in dma_chan_put() prior to module_put(), verify no KASAN reports on insmod or DMA channel teardown, and test with workloads that allocate and release DMA channels.
Typical attack path
- Obtain local code execution on a Linux system
- Load or trigger a driver/module that performs dmaengine channel get/put operations
- Force repeated dma_chan_put and dma_release_channel calls to drop the final reference
- Trigger the race where dma_device_release frees the structure before the trailing module_put
- Read freed memory via chan->device->owner to achieve use-after-free
How to detect it
Review kernel logs for KASAN slab-use-after-free reports referencing dma_chan_put, inspect module load/unload sequences involving dmaengine, and search system call traces for repeated DMA channel release patterns around the time of any crashes.
What your security team should do
- Prioritize kernel updates on all Linux systems within the next maintenance window due to the 17-day-old public disclosure
- Monitor EPSS trend and watch for any increase in exploit maturity
- Restrict unprivileged module loading and DMA-capable device access where feasible
- Enable KASAN or similar memory safety tooling in test environments to validate the fix
The record
In the Linux kernel, the following vulnerability has been resolved: dmaengine: fix use-after-free in dma_chan_put() and dma_release_channel() When dma_device_put() drops the last reference on chan->device->ref, dma_device_release() runs and may free the dma_device along with its channels. dma_chan_put() then still reads chan->device->owner via dma_chan_to_owner() for the trailing module_put(). KASAN catches it: slab-use-after-free in dma_chan_put+0x3e6/0x4c0 Read of size 8 by task insmod/6319 Freed by task 6319: kfree+0x225/0x470 dma_chan_put+0x395/0x4c0 dmaengine_put+0xf8/0x160 Cache the module owner in dma_chan_put() before the put so the trailing module_put() does not need chan->device.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|