CVEvulnerability
CVE-2026-89800
- Status
- Received
- Published
- 2026-09-16
- Last modified
- 2026-10-19
- Assigner
- 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Description
In the Linux kernel, the following vulnerability has been resolved:
drm/nouveau/uvmm: clear the dirty flag when unwinding an OP_UNMAP_SPARSE
A successful OP_UNMAP_SPARSE marks its region dirty with
nouveau_uvma_region_dirty() and defers the teardown to
nouveau_uvmm_bind_job_cleanup(); it does not remove the region from
uvmm->region_mt.
If a later op in the job fails, the unwind path never clears reg->dirty
(set in one place, cleared nowhere) and sets op->reg = NULL, so cleanup
skips the teardown. The region is left in the tree with dirty set and its
completion never signalled. Later binds over that range then fail
permanently -- -ENOENT or -EINVAL from the dirty checks, or an unkillable
wait_for_completion() in bind_validate_region() -- for the lifetime of
the uvmm.
Clear reg->dirty when the unwind reverts the sparse unmap, restoring the
region to the state it was found in.
References
- https://git.kernel.org/stable/c/1101cbfe7f342e5eaaf7444965d4f1215abdac4c git.kernel.org
- https://git.kernel.org/stable/c/196ce9e5e93202da097062be24e404984dbc5ac2 git.kernel.org
- https://git.kernel.org/stable/c/38a62306c4266bcb3cd89e33c7111ee33096ebb3 git.kernel.org
- https://git.kernel.org/stable/c/a129b2b875c148aba233ace8447a0c36ca3bae07 git.kernel.org
- https://git.kernel.org/stable/c/c60033c172420179b7bbb3d1f843f8dc90164dc5 git.kernel.org