CVE-2026-89450
nicheGuest-controlled out-of-range vSID write in Linux kernel tegra241-cmdqv IOMMU driver
The Linux kernel's tegra241-cmdqv driver (SMMUv3 command-queue virtualization for NVIDIA Tegra241/Grace SoCs) fails to properly validate a guest-provided virtual Stream ID (vSID) before writing it into the SID_MATCH register. The hardware's VIRT_SID field is only 20 bits wide, but the code only rejected values above UINT_MAX, so a wider guest-supplied value could be programmed beyond the field's bounds. Because the vSID/virt_id is guest-controlled, a malicious or compromised virtual machine on an affected host could trigger the bad register write, with high impact to confidentiality, integrity, and availability (CVSS 8.8, effectively a guest-to-host escape primitive). Only systems on Tegra241 (NVIDIA Grace) hardware exposing the virtualized SMMU command queues to guests are affected. No public proof of concept or in-the-wild exploitation is known.
What to do: Apply kernel updates containing the tegra241-cmdqv fix, which validates virt_sid against the 20-bit VIRT_SID field width with FIELD_MAX() and programs the register with FIELD_PREP(). Until patched, restrict or disable assignment of the virtualized SMMU (vcmdq/vSMMU) to untrusted guests on Grace-based hosts. Audit hypervisor logs for guests attempting to configure unusually large Stream ID values on vINTF/vSID setup.
| Linux kernel (drivers/iommu/tegra241-cmdqv) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: iommu/tegra241-cmdqv: Reject a vSID wider than the SID_MATCH field tegra241_vintf_init_vsid() programs the guest-provided vSID into SID_MATCH, whose VIRT_SID field spans bits [20:1] with bit 0 as the match-enable flag. The HW therefore matches only a 20-bit Stream ID. The bound check rejects only virt_sid > UINT_MAX, which admits a value far wider than the field. The write "virt_sid virt_id is guest-controlled, a VMM can trigger it. Validate virt_sid against the field width with FIELD_MAX(), and program the register with FIELD_PREP() so the value and the field stay consistent.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.