Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-43220

CVE-2026-43220: Linux Kernel Race Condition Vulnerability

CVE-2026-43220 is a race condition flaw in the Linux kernel's AMD IOMMU driver that causes TLB invalidation timeouts due to out-of-sequence command queuing. This article covers technical details, impact, and mitigation.

Published:

CVE-2026-43220 Overview

CVE-2026-43220 is a race condition in the AMD Input/Output Memory Management Unit (IOMMU) driver within the Linux kernel. The flaw exists in the Translation Lookaside Buffer (TLB) invalidation path, where the cmd_sem_val sequence counter was incremented outside the IOMMU spinlock. Under concurrent TLB invalidations, this allowed CMD_COMPL_WAIT commands to be queued out of sequence, breaking the ordering assumption in wait_on_sem() and causing completion waits to time out randomly. The kernel maintainers resolved the issue by moving the cmd_sem_val increment under iommu->lock to serialize sequence allocation with command queuing.

Critical Impact

Concurrent TLB invalidations can produce sporadic completion-wait timeouts that destabilize systems relying on AMD IOMMU, including virtualization hosts and DMA-protected workloads.

Affected Products

  • Linux kernel builds containing the AMD IOMMU driver prior to the fix
  • Systems using AMD platforms with IOMMU enabled for DMA remapping or virtualization
  • Kernel branches tracked by the stable commits referenced in the upstream advisory

Discovery Timeline

  • 2026-05-06 - CVE-2026-43220 published to NVD
  • 2026-05-06 - Last updated in NVD database

Technical Details for CVE-2026-43220

Vulnerability Analysis

The AMD IOMMU driver uses a command queue to issue invalidation requests to the hardware. Each CMD_COMPL_WAIT command carries a sequence value drawn from cmd_sem_val, and the driver later calls wait_on_sem() to confirm the hardware has reached that sequence. Correct operation depends on the sequence number assigned to a command matching the order in which the command is appended to the queue.

The driver incremented cmd_sem_val outside of iommu->lock, which guards command queue insertion. When two CPUs issued TLB invalidations concurrently, one thread could obtain a sequence value, get preempted, and have its command enqueued after a second thread that obtained a later sequence value. The hardware then signaled completion in queue order, while the waiter expected its specific sequence number, leading to spurious timeouts.

Root Cause

The root cause is an atomicity violation between sequence number allocation and command queue insertion. Two operations that must be observed as a single atomic step were performed under different synchronization scopes, producing a classic race condition between concurrent producers of IOMMU commands.

Attack Vector

This is a kernel reliability defect rather than a memory-safety flaw. Concurrent IOMMU consumers, such as drivers performing DMA unmaps, virtualization workloads, or device hot-path operations, trigger the race naturally under load. The observed effect is a completion-wait timeout, which the AMD IOMMU driver treats as a fatal condition. Refer to the upstream commits for the precise patch hunks: stable commit 9e249c4, stable commit 5000ce7, and stable commit 48caa75.

Detection Methods for CVE-2026-43220

Indicators of Compromise

  • Kernel log messages reporting completion-wait timeout or CMD_COMPL_WAIT failures from the amd_iommu subsystem
  • Sporadic device DMA stalls or iommu fault entries appearing during periods of high concurrent IO
  • Virtual machine guests reporting passthrough device hangs on AMD hosts running unpatched kernels

Detection Strategies

  • Inventory running Linux kernel versions across AMD-based fleets and compare against the fixed stable branches referenced in the upstream commits
  • Aggregate dmesg and journald output centrally and alert on AMD IOMMU completion-wait errors
  • Track host stability metrics for virtualization clusters, correlating reboots and device resets with IOMMU log entries

Monitoring Recommendations

  • Forward kernel ring buffer events to a centralized logging pipeline for long-term analysis
  • Monitor frequency of iommu related errors per host and trend over time to detect regression after kernel updates
  • Validate package versions on AMD EPYC and Ryzen hosts during routine compliance scans

How to Mitigate CVE-2026-43220

Immediate Actions Required

  • Apply the latest stable Linux kernel update for your distribution that includes the upstream fix moving cmd_sem_val increment under iommu->lock
  • Prioritize patching virtualization hosts and systems with PCIe device passthrough on AMD platforms
  • Reboot affected systems after package installation to load the corrected kernel image

Patch Information

The fix is committed upstream in the Linux kernel. Reference the stable tree commits at git.kernel.org commit 9e249c4, git.kernel.org commit 5000ce7, and git.kernel.org commit 48caa75. Distribution vendors backport these changes into their supported kernel streams.

Workarounds

  • No supported workaround replaces the patch; disabling AMD IOMMU is not advisable on systems relying on it for DMA isolation or virtualization
  • Reduce concurrent TLB invalidation pressure by limiting parallel device hot-plug or large DMA-unmap workloads until patching is complete
  • Schedule maintenance windows to deploy fixed kernels and validate stability under representative workloads

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.