KernelScan.io

HIGH Introduced in 4.20

drm/virtio BackingPage Leak

CVE-2026-98156

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H

KernelScan AI8.5HIGH

01

In the Linux kernel, the following vulnerability has been resolved: drm/virtio: use the DMA API for resource backing on Xen On a Xen PV domain page addresses bear no relation to the real machine addresses the host would have to use to reach it. virtio_ring.c handles this correctly, vring_use_map_api() returns true for any xen_domain() regardless of VIRTIO_F_ACCESS_PLATFORM. virtio-gpu makes the same decision independently, but its copy looks only at the feature bit: bool use_dma_api = !virtio_has_dma_quirk(vgdev->vdev); QEMU does not set iommu_platform on virtio-vga by default, so VIRTIO_F_ACCESS_PLATFORM is not negotiated, use_dma_api is false, and virtio_gpu_object_shmem_init() describes the framebuffer's backing pages to the host with sg_phys(). Those are guest-physical addresses. In a PV domain they resolve, on the host side, to pages belonging to some other domain, so the host scans out unrelated memory. Move the decision into virtio_gpu_use_dma_api() and give it the xen_domain() check, like vring_use_map_api() has. This additionally enables the dma_sync_sgtable_for_device() calls in virtgpu_vq.c, which are required for correctness whenever swiotlb is in play. Reproduced with a Xen 4.21 PV dom0 nested inside QEMU 8.2 with virtio-vga, on both a distro 6.8 kernel and 6.18 LTS. A PVH dom0 works fine and doesn't need this fix because it is identity-mapped, only PV dom0s are affected.

02

Engine v0.6.0

Risk summary

Systems running as Xen PV dom0 guests with a virtio-gpu (virtio-vga) device are affected. The driver uses guest-physical addresses instead of DMA addresses to describe framebuffer backing pages to the host, causing the host to read and display memory belonging to other Xen domains. This exposes sensitive data across domain boundaries and can corrupt other domains' memory.

Affecteddrivers/gpu/drm/virtio/virtgpu_object.c (drm/virtio)

Vulnerability analysis

The virtio-gpu driver decides whether to use the DMA API for framebuffer backing pages based only on a negotiated feature bit. On Xen PV domains, guest-physical addresses do not correspond to machine addresses, but the relevant platform feature is not enabled by default, so the DMA API is skipped. The driver then hands guest-physical addresses to the host, which resolves them to unrelated machine memory — potentially pages from other Xen domains — and scans out that memory as the framebuffer, leaking its contents. The fix adds a check for Xen PV domains to the DMA API decision so that correct DMA addresses are used, mirroring the logic already present in the core virtio layer. The bug is reachable from any process in a Xen PV dom0 with a virtio-gpu device; it requires Xen PV (not PVH) and the default configuration where the platform feature is not negotiated.

03

BranchIntroducedFixed inPatch commit
6.184.206.18.5393c557e947ef
7.24.207.2.7455184dbe965
mainline4.207.3-rc26a736d2f9d0c