FKIE_CVE-2026-68347
Vulnerability from fkie_nvd - Published: 2026-08-10 13:20 - Updated: 2026-08-17 06:17
Severity
Summary
In the Linux kernel, the following vulnerability has been resolved:
iommu/amd: Fix IRQ unsafe locking in gdom allocation
Lockdep complains:
[ 259.410489] =====================================================
[ 259.417287] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
[ 259.424667] 7.0.0-g51db1d8d2113 #54 Not tainted
[ 259.429718] -----------------------------------------------------
[ 259.436516] qemu-system-x86/10143 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
[ 259.444670] ff3b2b1c60305170 (&xa->xa_lock#25){+.+.}-{3:3}, at: __domain_flush_pages+0x17c/0x4b0
[ 259.454485]
and this task is already holding:
[ 259.460991] ff3b2b1c98504cc0 (&domain->lock){-.-.}-{3:3}, at: amd_iommu_iotlb_sync+0x25/0x60
[ 259.470408] which would create a new lock dependency:
[ 259.476041] (&domain->lock){-.-.}-{3:3} -> (&xa->xa_lock#25){+.+.}-{3:3}
[ 259.483615]
but this new dependency connects a HARDIRQ-irq-safe lock:
[ 259.492447] (&domain->lock){-.-.}-{3:3}
[ 259.492449]
... which became HARDIRQ-irq-safe at:
[ 259.503705] lock_acquire+0xb6/0x2e0
[ 259.507790] _raw_spin_lock_irqsave+0x3e/0x60
[ 259.512748] amd_iommu_flush_iotlb_all+0x20/0x50
[ 259.517996] iommu_dma_free_iova.isra.0+0x1b8/0x1e0
[ 259.523534] __iommu_dma_unmap+0xc2/0x140
[ 259.528100] iommu_dma_unmap_phys+0x55/0xc0
[ 259.532863] dma_unmap_phys+0x274/0x2e0
[ 259.537238] dma_unmap_page_attrs+0x17/0x30
[ 259.542000] nvme_unmap_data+0x13e/0x280
[ 259.546473] nvme_pci_complete_batch+0x45/0x70
[ 259.551524] nvme_irq+0x83/0x90
[ 259.555123] __handle_irq_event_percpu+0x92/0x360
[ 259.560466] handle_irq_event+0x39/0x80
[ 259.564841] handle_edge_irq+0xb2/0x1a0
[ 259.569214] __common_interrupt+0x4e/0x130
[ 259.573882] common_interrupt+0x88/0xa0
[ 259.578256] asm_common_interrupt+0x27/0x40
[ 259.583019] cpuidle_enter_state+0x119/0x5d0
[ 259.587877] cpuidle_enter+0x2e/0x50
[ 259.591962] do_idle+0x153/0x2c0
[ 259.595657] cpu_startup_entry+0x29/0x30
[ 259.600128] start_secondary+0x118/0x150
[ 259.604601] common_startup_64+0x13e/0x141
[ 259.609266]
to a HARDIRQ-irq-unsafe lock:
[ 259.615384] (&xa->xa_lock#25){+.+.}-{3:3}
[ 259.615386]
... which became HARDIRQ-irq-unsafe at:
[ 259.627039] ...
[ 259.627039] lock_acquire+0xb6/0x2e0
[ 259.633071] _raw_spin_lock+0x2f/0x50
[ 259.637250] amd_iommu_alloc_domain_nested+0x140/0x3c0
[ 259.643078] iommufd_hwpt_alloc+0x272/0x800 [iommufd]
[ 259.648813] iommufd_fops_ioctl+0x14e/0x200 [iommufd]
[ 259.654547] __x64_sys_ioctl+0x9d/0xf0
...
Since amd_iommu_domain_flush_pages() necessarily holds domain->lock to do the
flush, switch the allocation side in gdom_info_load_or_alloc_locked() to
HARDIRQ-safe allocation. The IOMMU_DESTROY->free path has the same issue,
so switch that path to HARDIRQ-safe locking as well.
References
Impacted products
| Vendor | Product | Version |
|---|
{
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/iommu/amd/nested.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "e0c78cdf35af3ada05f9309f4641e9f83c945dbd",
"status": "affected",
"version": "757d2b1fdf5b7d6eead5963a49b5780617987ab8",
"versionType": "git"
},
{
"lessThan": "0db3a430d9681fdb29890bef6934cd89cd1745d0",
"status": "affected",
"version": "757d2b1fdf5b7d6eead5963a49b5780617987ab8",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/iommu/amd/nested.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "7.0"
},
{
"lessThan": "7.0",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.6",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/amd: Fix IRQ unsafe locking in gdom allocation\n\nLockdep complains:\n\n [ 259.410489] =====================================================\n [ 259.417287] WARNING: HARDIRQ-safe -\u003e HARDIRQ-unsafe lock order detected\n [ 259.424667] 7.0.0-g51db1d8d2113 #54 Not tainted\n [ 259.429718] -----------------------------------------------------\n [ 259.436516] qemu-system-x86/10143 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:\n [ 259.444670] ff3b2b1c60305170 (\u0026xa-\u003exa_lock#25){+.+.}-{3:3}, at: __domain_flush_pages+0x17c/0x4b0\n [ 259.454485]\n and this task is already holding:\n [ 259.460991] ff3b2b1c98504cc0 (\u0026domain-\u003elock){-.-.}-{3:3}, at: amd_iommu_iotlb_sync+0x25/0x60\n [ 259.470408] which would create a new lock dependency:\n [ 259.476041] (\u0026domain-\u003elock){-.-.}-{3:3} -\u003e (\u0026xa-\u003exa_lock#25){+.+.}-{3:3}\n [ 259.483615]\n but this new dependency connects a HARDIRQ-irq-safe lock:\n [ 259.492447] (\u0026domain-\u003elock){-.-.}-{3:3}\n [ 259.492449]\n ... which became HARDIRQ-irq-safe at:\n [ 259.503705] lock_acquire+0xb6/0x2e0\n [ 259.507790] _raw_spin_lock_irqsave+0x3e/0x60\n [ 259.512748] amd_iommu_flush_iotlb_all+0x20/0x50\n [ 259.517996] iommu_dma_free_iova.isra.0+0x1b8/0x1e0\n [ 259.523534] __iommu_dma_unmap+0xc2/0x140\n [ 259.528100] iommu_dma_unmap_phys+0x55/0xc0\n [ 259.532863] dma_unmap_phys+0x274/0x2e0\n [ 259.537238] dma_unmap_page_attrs+0x17/0x30\n [ 259.542000] nvme_unmap_data+0x13e/0x280\n [ 259.546473] nvme_pci_complete_batch+0x45/0x70\n [ 259.551524] nvme_irq+0x83/0x90\n [ 259.555123] __handle_irq_event_percpu+0x92/0x360\n [ 259.560466] handle_irq_event+0x39/0x80\n [ 259.564841] handle_edge_irq+0xb2/0x1a0\n [ 259.569214] __common_interrupt+0x4e/0x130\n [ 259.573882] common_interrupt+0x88/0xa0\n [ 259.578256] asm_common_interrupt+0x27/0x40\n [ 259.583019] cpuidle_enter_state+0x119/0x5d0\n [ 259.587877] cpuidle_enter+0x2e/0x50\n [ 259.591962] do_idle+0x153/0x2c0\n [ 259.595657] cpu_startup_entry+0x29/0x30\n [ 259.600128] start_secondary+0x118/0x150\n [ 259.604601] common_startup_64+0x13e/0x141\n [ 259.609266]\n to a HARDIRQ-irq-unsafe lock:\n [ 259.615384] (\u0026xa-\u003exa_lock#25){+.+.}-{3:3}\n [ 259.615386]\n ... which became HARDIRQ-irq-unsafe at:\n [ 259.627039] ...\n [ 259.627039] lock_acquire+0xb6/0x2e0\n [ 259.633071] _raw_spin_lock+0x2f/0x50\n [ 259.637250] amd_iommu_alloc_domain_nested+0x140/0x3c0\n [ 259.643078] iommufd_hwpt_alloc+0x272/0x800 [iommufd]\n [ 259.648813] iommufd_fops_ioctl+0x14e/0x200 [iommufd]\n [ 259.654547] __x64_sys_ioctl+0x9d/0xf0\n ...\n\nSince amd_iommu_domain_flush_pages() necessarily holds domain-\u003elock to do the\nflush, switch the allocation side in gdom_info_load_or_alloc_locked() to\nHARDIRQ-safe allocation. The IOMMU_DESTROY-\u003efree path has the same issue,\nso switch that path to HARDIRQ-safe locking as well."
}
],
"id": "CVE-2026-68347",
"lastModified": "2026-08-17T06:17:42.917",
"metrics": {},
"published": "2026-08-10T13:20:26.553",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/0db3a430d9681fdb29890bef6934cd89cd1745d0"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/e0c78cdf35af3ada05f9309f4641e9f83c945dbd"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
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…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Loading…
Loading…