KernelScan.io

HIGH Introduced in 6.19

nouveau DmemUnmap Leak

CVE-2026-89804

CVSS 8.8 / 10.0 NVD

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

KernelScan AI5.5MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: drm/nouveau/dmem: fix mismatched DMA unmap size for large folios Device-private THP migration maps migration buffers with page_size() and records that length in dma_info->size. For a compound folio page_size() is PAGE_SIZE << order, but two teardown sites still pass a literal PAGE_SIZE to dma_unmap_page(): - nouveau_dmem_migrate_to_ram() on the success path, and - nouveau_dmem_migrate_copy_one() on the copy-error path. For an order > 0 folio this unmaps less than was mapped, leaking the remainder of the IOMMU/IOVA mapping. The other unmap sites, in nouveau_dmem_migrate_chunk() and nouveau_dmem_evict_chunk(), already use the saved size; use it here too.

02

Engine v0.6.0

Risk summary

A local user with access to a Nouveau GPU device can trigger device-private THP migration paths that partially unmap DMA mappings, leaking IOMMU/IOVA resources. Repeated triggering can exhaust IOMMU resources and cause denial of service. The fix corrects the unmap size to match the original mapping size.

Affecteddrivers/gpu/drm/nouveau/nouveau_dmem.c (drm/nouveau)

Vulnerability analysis

When the Nouveau driver migrates device-private transparent huge pages, it maps DMA buffers using the full compound page size but, on two teardown paths, unmaps only a single base page size. This leaves the remainder of the IOMMU/IOVA mapping unreleased, leaking DMA mapping entries each time migration of a large folio completes or fails. The fix changes both unmap calls to use the recorded mapping size, matching what was originally mapped. The vulnerable code is reachable from a local process that can access a Nouveau GPU device and trigger device-private memory migration; no special capabilities beyond device access are required.

03

BranchIntroducedFixed inPatch commit
7.26.197.2.54deb29b9d33b
mainline6.197.3-rc2caa1bc2a0a6c