CVE-2026-89801

CVE-2026-89801

High · published September 16, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
4.7
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

drm/nouveau/uvmm: fix premature region free on failed OP_UNMAP_SPARSE

In nouveau_uvmm_bind_job_submit()'s OP_UNMAP_SPARSE arm, op->reg is set

from nouveau_uvma_region_find(), which only looks the region up and takes

no reference; a region's sole reference is its membership in

uvmm->region_mt. Two failure paths leave op->reg set: the -ENOENT check

when the region is busy, and the drm_gpuvm_sm_unmap_ops_create() failure.

The sibling nouveau_uvmm_sm_unmap_prepare() failure just below clears

op->reg; these two do not.

unwind_continue steps back one op, so the failing op is skipped by the

unwind loop and its op->reg stays set. nouveau_uvmm_bind_job_cleanup()

then enters its if (op->reg) branch and calls nouveau_uvma_region_remove()

and nouveau_uvma_region_put() on it, dropping the tree's sole reference

and freeing a region this job never created. The comment above the

cleanup loop documents the broken invariant: op->reg must be NULL on

submit failure.

This frees a live region on an unrelated failure, reachable single-job

when drm_gpuvm_sm_unmap_ops_create() returns -ENOMEM; if another job owns

the same region, its cleanup then removes and puts the freed region, a

use-after-free. Clear op->reg on both failure paths.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00159 · 4.7th percentile
Published
2026-09-16T15:16Z
References (5)
EPSS history
Timeline
  • 18 SEP 04:02Z
    EPSS moved — → 0%
    epss
  • 16 SEP 10:30Z
    drm/nouveau/uvmm: fix premature region free on failed OP_UNMAP_SPARSE
    cvelistv5