CVE-2026-43161 (GCVE-0-2026-43161)
Vulnerability from cvelistv5 – Published: 2026-05-06 11:27 – Updated: 2026-05-06 11:27
VLAI?
Title
iommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode
Summary
In the Linux kernel, the following vulnerability has been resolved:
iommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode
PCIe endpoints with ATS enabled and passed through to userspace
(e.g., QEMU, DPDK) can hard-lock the host when their link drops,
either by surprise removal or by a link fault.
Commit 4fc82cd907ac ("iommu/vt-d: Don't issue ATS Invalidation
request when device is disconnected") adds pci_dev_is_disconnected()
to devtlb_invalidation_with_pasid() so ATS invalidation is skipped
only when the device is being safely removed, but it applies only
when Intel IOMMU scalable mode is enabled.
With scalable mode disabled or unsupported, a system hard-lock
occurs when a PCIe endpoint's link drops because the Intel IOMMU
waits indefinitely for an ATS invalidation that cannot complete.
Call Trace:
qi_submit_sync
qi_flush_dev_iotlb
__context_flush_dev_iotlb.part.0
domain_context_clear_one_cb
pci_for_each_dma_alias
device_block_translation
blocking_domain_attach_dev
iommu_deinit_device
__iommu_group_remove_device
iommu_release_device
iommu_bus_notifier
blocking_notifier_call_chain
bus_notify
device_del
pci_remove_bus_device
pci_stop_and_remove_bus_device
pciehp_unconfigure_device
pciehp_disable_slot
pciehp_handle_presence_or_link_change
pciehp_ist
Commit 81e921fd3216 ("iommu/vt-d: Fix NULL domain on device release")
adds intel_pasid_teardown_sm_context() to intel_iommu_release_device(),
which calls qi_flush_dev_iotlb() and can also hard-lock the system
when a PCIe endpoint's link drops.
Call Trace:
qi_submit_sync
qi_flush_dev_iotlb
__context_flush_dev_iotlb.part.0
intel_context_flush_no_pasid
device_pasid_table_teardown
pci_pasid_table_teardown
pci_for_each_dma_alias
intel_pasid_teardown_sm_context
intel_iommu_release_device
iommu_deinit_device
__iommu_group_remove_device
iommu_release_device
iommu_bus_notifier
blocking_notifier_call_chain
bus_notify
device_del
pci_remove_bus_device
pci_stop_and_remove_bus_device
pciehp_unconfigure_device
pciehp_disable_slot
pciehp_handle_presence_or_link_change
pciehp_ist
Sometimes the endpoint loses connection without a link-down event
(e.g., due to a link fault); killing the process (virsh destroy)
then hard-locks the host.
Call Trace:
qi_submit_sync
qi_flush_dev_iotlb
__context_flush_dev_iotlb.part.0
domain_context_clear_one_cb
pci_for_each_dma_alias
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
pci_dev_is_disconnected() only covers safe-removal paths;
pci_device_is_present() tests accessibility by reading
vendor/device IDs and internally calls pci_dev_is_disconnected().
On a ConnectX-5 (8 GT/s, x2) this costs ~70 µs.
Since __context_flush_dev_iotlb() is only called on
{attach,release}_dev paths (not hot), add pci_device_is_present()
there to skip inaccessible devices and avoid the hard-lock.
Severity ?
No CVSS data available.
Assigner
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Affected:
37764b952e1b39053defc7ebe5dcd8c4e3e78de9 , < 48b3f08e68b29a79527869cdde7298ca2a9b9646
(git)
Affected: 37764b952e1b39053defc7ebe5dcd8c4e3e78de9 , < e70d5feb10c5ba2bbf7ca400b8f39a2f82d653e8 (git) Affected: 37764b952e1b39053defc7ebe5dcd8c4e3e78de9 , < bc0490ad9edf5c6f98e39fbbee2877b85261a5ae (git) Affected: 37764b952e1b39053defc7ebe5dcd8c4e3e78de9 , < 42662d19839f34735b718129ea200e3734b07e50 (git) Affected: 99301a53a1378f8863ac7850b9589f997bb0e125 (git) Affected: 948ec6d003280d49aca49b366aa5cb140f87434d (git) |
||
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/iommu/intel/pasid.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "48b3f08e68b29a79527869cdde7298ca2a9b9646",
"status": "affected",
"version": "37764b952e1b39053defc7ebe5dcd8c4e3e78de9",
"versionType": "git"
},
{
"lessThan": "e70d5feb10c5ba2bbf7ca400b8f39a2f82d653e8",
"status": "affected",
"version": "37764b952e1b39053defc7ebe5dcd8c4e3e78de9",
"versionType": "git"
},
{
"lessThan": "bc0490ad9edf5c6f98e39fbbee2877b85261a5ae",
"status": "affected",
"version": "37764b952e1b39053defc7ebe5dcd8c4e3e78de9",
"versionType": "git"
},
{
"lessThan": "42662d19839f34735b718129ea200e3734b07e50",
"status": "affected",
"version": "37764b952e1b39053defc7ebe5dcd8c4e3e78de9",
"versionType": "git"
},
{
"status": "affected",
"version": "99301a53a1378f8863ac7850b9589f997bb0e125",
"versionType": "git"
},
{
"status": "affected",
"version": "948ec6d003280d49aca49b366aa5cb140f87434d",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/iommu/intel/pasid.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.14"
},
{
"lessThan": "5.14",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.77",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.17",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.19.*",
"status": "unaffected",
"version": "6.19.6",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.0",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.77",
"versionStartIncluding": "5.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.17",
"versionStartIncluding": "5.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.19.6",
"versionStartIncluding": "5.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.0",
"versionStartIncluding": "5.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.12.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.13.4",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode\n\nPCIe endpoints with ATS enabled and passed through to userspace\n(e.g., QEMU, DPDK) can hard-lock the host when their link drops,\neither by surprise removal or by a link fault.\n\nCommit 4fc82cd907ac (\"iommu/vt-d: Don\u0027t issue ATS Invalidation\nrequest when device is disconnected\") adds pci_dev_is_disconnected()\nto devtlb_invalidation_with_pasid() so ATS invalidation is skipped\nonly when the device is being safely removed, but it applies only\nwhen Intel IOMMU scalable mode is enabled.\n\nWith scalable mode disabled or unsupported, a system hard-lock\noccurs when a PCIe endpoint\u0027s link drops because the Intel IOMMU\nwaits indefinitely for an ATS invalidation that cannot complete.\n\nCall Trace:\n qi_submit_sync\n qi_flush_dev_iotlb\n __context_flush_dev_iotlb.part.0\n domain_context_clear_one_cb\n pci_for_each_dma_alias\n device_block_translation\n blocking_domain_attach_dev\n iommu_deinit_device\n __iommu_group_remove_device\n iommu_release_device\n iommu_bus_notifier\n blocking_notifier_call_chain\n bus_notify\n device_del\n pci_remove_bus_device\n pci_stop_and_remove_bus_device\n pciehp_unconfigure_device\n pciehp_disable_slot\n pciehp_handle_presence_or_link_change\n pciehp_ist\n\nCommit 81e921fd3216 (\"iommu/vt-d: Fix NULL domain on device release\")\nadds intel_pasid_teardown_sm_context() to intel_iommu_release_device(),\nwhich calls qi_flush_dev_iotlb() and can also hard-lock the system\nwhen a PCIe endpoint\u0027s link drops.\n\nCall Trace:\n qi_submit_sync\n qi_flush_dev_iotlb\n __context_flush_dev_iotlb.part.0\n intel_context_flush_no_pasid\n device_pasid_table_teardown\n pci_pasid_table_teardown\n pci_for_each_dma_alias\n intel_pasid_teardown_sm_context\n intel_iommu_release_device\n iommu_deinit_device\n __iommu_group_remove_device\n iommu_release_device\n iommu_bus_notifier\n blocking_notifier_call_chain\n bus_notify\n device_del\n pci_remove_bus_device\n pci_stop_and_remove_bus_device\n pciehp_unconfigure_device\n pciehp_disable_slot\n pciehp_handle_presence_or_link_change\n pciehp_ist\n\nSometimes the endpoint loses connection without a link-down event\n(e.g., due to a link fault); killing the process (virsh destroy)\nthen hard-locks the host.\n\nCall Trace:\n qi_submit_sync\n qi_flush_dev_iotlb\n __context_flush_dev_iotlb.part.0\n domain_context_clear_one_cb\n pci_for_each_dma_alias\n device_block_translation\n blocking_domain_attach_dev\n __iommu_attach_device\n __iommu_device_set_domain\n __iommu_group_set_domain_internal\n iommu_detach_group\n vfio_iommu_type1_detach_group\n vfio_group_detach_container\n vfio_group_fops_release\n __fput\n\npci_dev_is_disconnected() only covers safe-removal paths;\npci_device_is_present() tests accessibility by reading\nvendor/device IDs and internally calls pci_dev_is_disconnected().\nOn a ConnectX-5 (8 GT/s, x2) this costs ~70 \u00b5s.\n\nSince __context_flush_dev_iotlb() is only called on\n{attach,release}_dev paths (not hot), add pci_device_is_present()\nthere to skip inaccessible devices and avoid the hard-lock."
}
],
"providerMetadata": {
"dateUpdated": "2026-05-06T11:27:39.881Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/48b3f08e68b29a79527869cdde7298ca2a9b9646"
},
{
"url": "https://git.kernel.org/stable/c/e70d5feb10c5ba2bbf7ca400b8f39a2f82d653e8"
},
{
"url": "https://git.kernel.org/stable/c/bc0490ad9edf5c6f98e39fbbee2877b85261a5ae"
},
{
"url": "https://git.kernel.org/stable/c/42662d19839f34735b718129ea200e3734b07e50"
}
],
"title": "iommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-43161",
"datePublished": "2026-05-06T11:27:39.881Z",
"dateReserved": "2026-05-01T14:12:55.990Z",
"dateUpdated": "2026-05-06T11:27:39.881Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-43161",
"date": "2026-05-08",
"epss": "0.00018",
"percentile": "0.04677"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2026-43161\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-05-06T12:16:34.137\",\"lastModified\":\"2026-05-06T13:07:51.607\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\niommu/vt-d: Skip dev-iotlb flush for inaccessible PCIe device without scalable mode\\n\\nPCIe endpoints with ATS enabled and passed through to userspace\\n(e.g., QEMU, DPDK) can hard-lock the host when their link drops,\\neither by surprise removal or by a link fault.\\n\\nCommit 4fc82cd907ac (\\\"iommu/vt-d: Don\u0027t issue ATS Invalidation\\nrequest when device is disconnected\\\") adds pci_dev_is_disconnected()\\nto devtlb_invalidation_with_pasid() so ATS invalidation is skipped\\nonly when the device is being safely removed, but it applies only\\nwhen Intel IOMMU scalable mode is enabled.\\n\\nWith scalable mode disabled or unsupported, a system hard-lock\\noccurs when a PCIe endpoint\u0027s link drops because the Intel IOMMU\\nwaits indefinitely for an ATS invalidation that cannot complete.\\n\\nCall Trace:\\n qi_submit_sync\\n qi_flush_dev_iotlb\\n __context_flush_dev_iotlb.part.0\\n domain_context_clear_one_cb\\n pci_for_each_dma_alias\\n device_block_translation\\n blocking_domain_attach_dev\\n iommu_deinit_device\\n __iommu_group_remove_device\\n iommu_release_device\\n iommu_bus_notifier\\n blocking_notifier_call_chain\\n bus_notify\\n device_del\\n pci_remove_bus_device\\n pci_stop_and_remove_bus_device\\n pciehp_unconfigure_device\\n pciehp_disable_slot\\n pciehp_handle_presence_or_link_change\\n pciehp_ist\\n\\nCommit 81e921fd3216 (\\\"iommu/vt-d: Fix NULL domain on device release\\\")\\nadds intel_pasid_teardown_sm_context() to intel_iommu_release_device(),\\nwhich calls qi_flush_dev_iotlb() and can also hard-lock the system\\nwhen a PCIe endpoint\u0027s link drops.\\n\\nCall Trace:\\n qi_submit_sync\\n qi_flush_dev_iotlb\\n __context_flush_dev_iotlb.part.0\\n intel_context_flush_no_pasid\\n device_pasid_table_teardown\\n pci_pasid_table_teardown\\n pci_for_each_dma_alias\\n intel_pasid_teardown_sm_context\\n intel_iommu_release_device\\n iommu_deinit_device\\n __iommu_group_remove_device\\n iommu_release_device\\n iommu_bus_notifier\\n blocking_notifier_call_chain\\n bus_notify\\n device_del\\n pci_remove_bus_device\\n pci_stop_and_remove_bus_device\\n pciehp_unconfigure_device\\n pciehp_disable_slot\\n pciehp_handle_presence_or_link_change\\n pciehp_ist\\n\\nSometimes the endpoint loses connection without a link-down event\\n(e.g., due to a link fault); killing the process (virsh destroy)\\nthen hard-locks the host.\\n\\nCall Trace:\\n qi_submit_sync\\n qi_flush_dev_iotlb\\n __context_flush_dev_iotlb.part.0\\n domain_context_clear_one_cb\\n pci_for_each_dma_alias\\n device_block_translation\\n blocking_domain_attach_dev\\n __iommu_attach_device\\n __iommu_device_set_domain\\n __iommu_group_set_domain_internal\\n iommu_detach_group\\n vfio_iommu_type1_detach_group\\n vfio_group_detach_container\\n vfio_group_fops_release\\n __fput\\n\\npci_dev_is_disconnected() only covers safe-removal paths;\\npci_device_is_present() tests accessibility by reading\\nvendor/device IDs and internally calls pci_dev_is_disconnected().\\nOn a ConnectX-5 (8 GT/s, x2) this costs ~70 \u00b5s.\\n\\nSince __context_flush_dev_iotlb() is only called on\\n{attach,release}_dev paths (not hot), add pci_device_is_present()\\nthere to skip inaccessible devices and avoid the hard-lock.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/42662d19839f34735b718129ea200e3734b07e50\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/48b3f08e68b29a79527869cdde7298ca2a9b9646\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bc0490ad9edf5c6f98e39fbbee2877b85261a5ae\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/e70d5feb10c5ba2bbf7ca400b8f39a2f82d653e8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
}
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…