---
id: CVE-2026-89804
title: |-
  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_in…
summary: |-
  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_in…
severity: high
cvss: 8.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= c3228747107705d47c7e9a03598a434a0380cb73 <
    4deb29b9d33bfdb3de4d2d9944947ecf77221e42
  - >-
    Linux >= c3228747107705d47c7e9a03598a434a0380cb73 <
    caa1bc2a0a6ca19dcb90bbf88208b0fe2decd66f
  - Linux 6.19
published: '2026-09-16'
updated: '2026-09-16'
sourceUpdated: '2026-09-16T15:18:10.130'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-89804'
references:
  - url: 'https://git.kernel.org/stable/c/4deb29b9d33bfdb3de4d2d9944947ecf77221e42'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/caa1bc2a0a6ca19dcb90bbf88208b0fe2decd66f'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
ingestedAt: '2026-09-16T10:53:54.007Z'
epss: 0.00154
epssPercentile: 0.04929
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
