PatchSiren cyber security CVE debrief
CVE-2025-71221 Linux CVE debrief
A race condition in the Linux kernel's MMP PDMA (Peripheral DMA) engine driver can lead to use-after-free when multiple threads query DMA transaction status while a tasklet frees completed descriptors on another CPU. The vulnerability exists in mmp_pdma_residue(), which iterates the chain_running descriptor list without holding the channel's desc_lock spinlock. An interrupt-driven tasklet can concurrently move and free a descriptor between the list iteration and member access, resulting in a use-after-free. The issue is reproducible under dmatest with threads_per_chan > 1. The fix adds proper spinlock protection around the list iteration and descriptor access in mmp_pdma_residue().
- Vendor
- Linux
- Product
- Unknown
- CVSS
- MEDIUM 5.5
- CISA KEV
- Not listed in stored evidence
- Original CVE published
- 2026-07-14
- Original CVE updated
- 2026-07-28
- Advisory published
- 2026-07-14
- Advisory updated
- 2026-07-28
Who should care
Linux kernel maintainers, embedded systems vendors using Marvell MMP (PXA) SoCs with PDMA, security teams tracking kernel DMA subsystem vulnerabilities, and organizations running untrusted or multi-threaded DMA workloads on affected kernels.
Technical summary
The MMP PDMA driver in the Linux kernel contains a race condition in mmp_pdma_residue(), called via the dmaengine tx_status() path. The function iterates the chain_running list and accesses descriptor members without acquiring chan->desc_lock. Concurrently, a DMA interrupt tasklet on another CPU may acquire desc_lock, move the descriptor to a completed list, free it via dma_pool_free(), and release the lock. The tx_status() path then accesses the freed descriptor, causing a use-after-free. The fix protects the list iteration and descriptor access with the existing desc_lock spinlock. The vulnerability requires local access and a multi-threaded DMA workload to trigger, with high attack complexity.
Defensive priority
HIGH
Recommended defensive actions
- Apply the upstream kernel patches that add desc_lock spinlock protection in mmp_pdma_residue() for affected kernel versions (3.16 through 6.18.10 and 6.19-rc1 through 6.19-rc5).
- If patching is not immediately feasible, avoid running multi-threaded DMA tests or workloads with threads_per_chan > 1 on MMP PDMA channels, as this is the reported reproduction condition.
- Monitor vendor kernel security updates for backported fixes to stable and long-term support branches.
- Review custom or out-of-tree DMA engine drivers for similar missing locking around descriptor list iteration and access patterns.
Evidence notes
The vulnerability description and fix were published on 2026-02-14 and modified on 2026-06-01 per NVD. The race condition is documented with a CPU interleaving diagram showing the missing lock in mmp_pdma_residue() versus the tasklet's desc_lock-protected list_move and dma_pool_free. Two commits are tagged as Patch in the NVD references. Affected versions span Linux kernel 3.16 through 6.18.10 and 6.19-rc1 through 6.19-rc5 per CPE criteria. CVSS 3.1 vector AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H yields a base score of 7.0 (HIGH). CWE-362 (Concurrent Execution using Shared Resource with Improper Synchronization) is assigned.
Sources and references
Verified primary and authoritative sources
-
CVE-2025-71221 CVE Program record
Publisher, destination, and source semantics verified
URL: https://www.cve.org/CVERecord?id=CVE-2025-71221
CVE Program - Official CVE Program record with source-provided CVE metadata.
-
CVE-2025-71221 NVD vulnerability detail
Publisher, destination, and source semantics verified
URL: https://nvd.nist.gov/vuln/detail/CVE-2025-71221
NIST National Vulnerability Database - Official NIST NVD detail page and source-specific vulnerability assessment.
Supplemental references
-
Source reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/3f0e0e2d9e752570041e95fd04635e2580097819
416baaa9-dc9f-4396-8d5f-8c081fb06d67
-
Mitigation or vendor reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/9f665b3c3d9a168410251f27a5d019b7bf93185c
416baaa9-dc9f-4396-8d5f-8c081fb06d67 - Patch
-
Mitigation or vendor reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/a143545855bc2c6e1330f6f57ae375ac44af00a7
416baaa9-dc9f-4396-8d5f-8c081fb06d67 - Patch
-
Source reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/dfb5e05227745de43b7fd589721817a4337c970d
416baaa9-dc9f-4396-8d5f-8c081fb06d67
-
Source reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/eba0c75670c022cb1f948600db972524bcfe8166
416baaa9-dc9f-4396-8d5f-8c081fb06d67
-
Source reference
Unverified legacy reference
URL: https://git.kernel.org/stable/c/fc023b8fab057f0c910856ff36d3e12a30b7af4a
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Methodology and review provenance
AI-assisted synthesis based on stored public vulnerability evidence. System validation, approval state, and publication status do not by themselves establish human review of this revision. PatchSiren helps prioritize defensive review and does not prove exposure or remediation on any system.