{"id":"CVE-2026-89801","summary":"drm/nouveau/uvmm: fix premature region free on failed OP_UNMAP_SPARSE","details":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/nouveau/uvmm: fix premature region free on failed OP_UNMAP_SPARSE\n\nIn nouveau_uvmm_bind_job_submit()'s OP_UNMAP_SPARSE arm, op-\u003ereg is set\nfrom nouveau_uvma_region_find(), which only looks the region up and takes\nno reference; a region's sole reference is its membership in\nuvmm-\u003eregion_mt. Two failure paths leave op-\u003ereg set: the -ENOENT check\nwhen the region is busy, and the drm_gpuvm_sm_unmap_ops_create() failure.\nThe sibling nouveau_uvmm_sm_unmap_prepare() failure just below clears\nop-\u003ereg; these two do not.\n\nunwind_continue steps back one op, so the failing op is skipped by the\nunwind loop and its op-\u003ereg stays set. nouveau_uvmm_bind_job_cleanup()\nthen enters its if (op-\u003ereg) branch and calls nouveau_uvma_region_remove()\nand nouveau_uvma_region_put() on it, dropping the tree's sole reference\nand freeing a region this job never created. The comment above the\ncleanup loop documents the broken invariant: op-\u003ereg must be NULL on\nsubmit failure.\n\nThis frees a live region on an unrelated failure, reachable single-job\nwhen drm_gpuvm_sm_unmap_ops_create() returns -ENOMEM; if another job owns\nthe same region, its cleanup then removes and puts the freed region, a\nuse-after-free. Clear op-\u003ereg on both failure paths.","modified":"2026-09-18T03:48:32.856515864Z","published":"2026-09-16T10:30:34.458Z","database_specific":{"cna_assigner":"Linux","osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89801.json"},"references":[{"type":"WEB","url":"https://git.kernel.org/stable/c/24c25b182d17d1bdfde0088c96bdf6f93e8f46bc"},{"type":"WEB","url":"https://git.kernel.org/stable/c/4083d24c2636fde7b18076115af52820d203bc57"},{"type":"WEB","url":"https://git.kernel.org/stable/c/88114e3a96582882e63b2f73aa7a5a9cf0d5073c"},{"type":"WEB","url":"https://git.kernel.org/stable/c/ba42d8a1c2c7629c61914df11a7d63ac77449ffb"},{"type":"WEB","url":"https://git.kernel.org/stable/c/ccf930812f23b8259ef64fd3394d53b093e4651a"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89801.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-89801"},{"type":"PACKAGE","url":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"b88baab828713ce0b49b185444b2ee83bed373a8"},{"fixed":"ba42d8a1c2c7629c61914df11a7d63ac77449ffb"},{"fixed":"88114e3a96582882e63b2f73aa7a5a9cf0d5073c"},{"fixed":"24c25b182d17d1bdfde0088c96bdf6f93e8f46bc"},{"fixed":"4083d24c2636fde7b18076115af52820d203bc57"},{"fixed":"ccf930812f23b8259ef64fd3394d53b093e4651a"}]}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89801.json"}},{"package":{"name":"Kernel","ecosystem":"Linux"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.6.0"},{"fixed":"6.6.157"}]},{"type":"ECOSYSTEM","events":[{"introduced":"6.7.0"},{"fixed":"6.12.110"}]},{"type":"ECOSYSTEM","events":[{"introduced":"6.13.0"},{"fixed":"6.18.51"}]},{"type":"ECOSYSTEM","events":[{"introduced":"6.19.0"},{"fixed":"7.2.5"}]}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89801.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"}]}