CVE-2026-43130

iommu/vt-d: Flush dev-IOTLB only when PCIe device is accessible in scalable mode

State
Published
Severity
Not scored
Published
May 6, 2026
Updated
May 23, 2026
Reserved
May 1, 2026

Read the record on cve.org

Description

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

iommu/vt-d: Flush dev-IOTLB only when PCIe device is accessible in scalable mode

Commit 4fc82cd907ac ("iommu/vt-d: Don't issue ATS Invalidation request when device is disconnected") relies on pci_dev_is_disconnected() to skip ATS invalidation for safely-removed devices, but it does not cover link-down caused by faults, which can still hard-lock the system.

For example, if a VM fails to connect to the PCIe device, "virsh destroy" is executed to release resources and isolate the fault, but a hard-lockup occurs while releasing the group fd.

Call Trace: qi_submit_sync qi_flush_dev_iotlb intel_pasid_tear_down_entry device_block_translation blocking_domain_attach_dev __iommu_attach_device __iommu_device_set_domain __iommu_group_set_domain_internal iommu_detach_group vfio_iommu_type1_detach_group vfio_group_detach_container vfio_group_fops_release __fput

Although pci_device_is_present() is slower than pci_dev_is_disconnected(), it still takes only ~70 µs on a ConnectX-5 (8 GT/s, x2) and becomes even faster as PCIe speed and width increase.

Besides, devtlb_invalidation_with_pasid() is called only in the paths below, which are far less frequent than memory map/unmap.

1. mm-struct release 2. {attach,release}_dev 3. set/remove PASID 4. dirty-tracking setup

The gain in system stability far outweighs the negligible cost of using pci_device_is_present() instead of pci_dev_is_disconnected() to decide when to skip ATS invalidation, especially under GDR high-load conditions.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • f873b85ec762c5a6abe94a7ddb31df5d3ba07d85 to before 581ce094d9eafb78ec4f9de77bd24b780c151236Affected
  • d70f1c85113cd8c2aa8373f491ca5d1b22ec0554 to before e2c78c69f8faf2885ea4ceee08c71ac738f401a0Affected
  • 34a7b30f56d30114bf4d436e4dc793afe326fbcf to before ead67d0378e90f419e385a43af29435242d80c12Affected
  • 2b74b2a92e524d7c8dec8e02e95ecf18b667c062 to before 01aed2f1d7cb8fdf4c60c5bb4727608cb82b401dAffected
  • 4fc82cd907ac075648789cc3a00877778aa1838b to before 9813306610d0d718c863aaa70928bf57d7570ec0Affected
  • 4fc82cd907ac075648789cc3a00877778aa1838b to before 9deaacc8dcaddb6ddc5b52e1e63b457450ec0f94Affected
  • 4fc82cd907ac075648789cc3a00877778aa1838b to before 0da6697e577023d8867c7beb2d16a22510e4eea9Affected
  • 4fc82cd907ac075648789cc3a00877778aa1838b to before 10e60d87813989e20eac1f3eda30b3bae461e7f9Affected
  • c04f2780919f20e2cc4846764221f5e802555868Affected
  • 025bc6b41e020aeb1e71f84ae3ffce945026de05Affected
  • 5.10.214 to before 5.10.252Affected
  • 5.15.153 to before 5.15.202Affected
  • 6.1.83 to before 6.1.165Affected
  • 6.6.23 to before 6.6.128Affected
  • 6.7.11 to before 6.8Affected
  • 6.8.2 to before 6.9Affected
LinuxLinux
  • 6.9Affected
  • before 6.9Not affected
  • 5.10.252 through 5.10.*Not affected
  • 5.15.202 through 5.15.*Not affected
  • 6.1.165 through 6.1.*Not affected
  • 6.6.128 through 6.6.*Not affected
  • 6.12.75 through 6.12.*Not affected
  • 6.18.16 through 6.18.*Not affected
  • 6.19.6 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.