PatchSiren

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.