{"id":"CVE-2026-80818","revision":"04341b38e80349d9a5d95c30dc93bd37","records":[{"revision":"04341b38e80349d9a5d95c30dc93bd37","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-80818","aliases":[],"title":"iommu/tegra241-cmdqv: Fix CMD_SYNC use-after-free on teardown","description":"In the Linux kernel, the following vulnerability has been resolved:\n\niommu/tegra241-cmdqv: Fix CMD_SYNC use-after-free on teardown\n\narm_smmu_impl_remove() is registered as a devres action in\narm_smmu_impl_probe(), before arm_smmu_init_queues() allocates\nsmmu->cmdq.q.base. On a devres unwind, whether a failed probe or an\nunbind, the queue is freed first and arm_smmu_impl_remove() then runs\ntegra241_cmdqv_remove_vintf(), whose VINTF deinit issues a CMD_SYNC on\nthe freed memory.\n\nObserved during testing with a QEMU hack that makes the VCMDQ fail to\nenable, so the impl reset fails and probe aborts into the devres unwind:\n\n platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: failed to enable, STATUS=0x00000000\n platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: GERRORN=0x0, GERROR=0x4, CONS=0x0\n platform NVDA200C:00: tegra241_cmdqv: VINTF0: VCMDQ0/LVCMDQ0: uncleared error detected, resetting\n arm-smmu-v3 arm-smmu-v3.0.auto: failed to reset impl\n arm-smmu-v3 arm-smmu-v3.0.auto: probe with driver arm-smmu-v3 failed with error -110\n Unable to handle kernel paging request at virtual address ffff8000891e0098\n ...\n Internal error: Oops: 0000000096000047 [#1] SMP\n ...\n Call trace:\n  arm_smmu_cmdq_issue_cmdlist+0x320/0x6fc (P)\n  tegra241_vcmdq_hw_deinit+0x98/0x168\n  tegra241_vintf_hw_deinit+0x5c/0x1b0\n  tegra241_cmdqv_remove_vintf+0x34/0xec\n  tegra241_cmdqv_remove+0x40/0x9c\n  arm_smmu_impl_remove+0x20/0x30\n  devm_action_release+0x14/0x20\n  devres_release_all+0xa8/0x110\n  device_unbind_cleanup+0x18/0x84\n  really_probe+0x1f0/0x29c\n\nDrop the VINTF deinit from tegra241_cmdqv_remove_vintf() so the unwind no\nlonger touches the freed queue. Quiesce the VINTFs earlier instead. Add a\ndevice_disable() impl op and run it from arm_smmu_disable_action() while\nthe CMDQ is still up. That handles a live unbind. A failed reset is already\nhandled because tegra241_vintf_hw_init() deinits the VINTF on its own error\npath. tegra241_cmdqv_remove_vintf() is also used by the iommufd viommu\ndestroy path, so quiesce there too.","state":0,"publishedAt":"2026-09-04T15:13:39.273+00:00","modifiedAt":"2026-10-19T08:44:11.934+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c\",\n                        \"drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h\",\n                        \"drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7\",\n                            \"lessThan\": \"d2ab08437e913d9e4dda4dfd0d327446ec8717fc\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7\",\n                            \"lessThan\": \"a94309bb99eaf0c6a2ace4927864486d19458eb5\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7\",\n                            \"lessThan\": \"5994617e09ee6016c1b094f29d9c85cac944b477\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"4dc0d12474f9d4833c3dd96b73d61e406d3f5dc7\",\n                            \"lessThan\": \"9ff145a25c5c8a26b06ef7cf558fb536b18bba6d\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c\",\n                        \"drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h\",\n                        \"drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"6.17\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"6.17\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.47\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.1.11\",\n                            \"lessThanOrEqual\": \"7.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2.1\",\n                            \"lessThanOrEqual\": \"7.2.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.3\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://git.kernel.org/stable/c/d2ab08437e913d9e4dda4dfd0d327446ec8717fc","https://git.kernel.org/stable/c/a94309bb99eaf0c6a2ace4927864486d19458eb5","https://git.kernel.org/stable/c/5994617e09ee6016c1b094f29d9c85cac944b477","https://git.kernel.org/stable/c/9ff145a25c5c8a26b06ef7cf558fb536b18bba6d"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-80818","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-80818","identifiers":["CVE-2026-80818"]},"retained":false,"historicalAffected":[]}],"coverage":[]}