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

CVE-2026-89801
HIGH 7.8

En bref

Source
NVD
EPSS
EPSS 0.16 % · centile 5 ()
État
PUBLISHED
Publiée
Mise à jour
Attribuée par
Linux
Statut NVD
Received

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.

Références

Scores

VersionScoreVecteurÉvalué par
CVSS 3.1HIGH 7.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux
CVSS 3.1HIGH 7.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HNVD · 416baaa9-dc9f-4396-8d5f-8c081fb06d67 (Secondary)

Références européennes

Avis du CERT-FR

Produits affectés

ProduitVersions
Linux · Linuxaffected b88baab828713ce0b49b185444b2ee83bed373a8 < ba42d8a1c2c7629c61914df11a7d63ac77449ffb ; affected b88baab828713ce0b49b185444b2ee83bed373a8 < 88114e3a96582882e63b2f73aa7a5a9cf0d5073c ; affected b88baab828713ce0b49b185444b2ee83bed373a8 < 24c25b182d17d1bdfde0088c96bdf6f93e8f46bc ; affected b88baab828713ce0b49b185444b2ee83bed373a8 < 4083d24c2636fde7b18076115af52820d203bc57 ; affected b88baab828713ce0b49b185444b2ee83bed373a8 < ccf930812f23b8259ef64fd3394d53b093e4651a
Linux · Linuxaffected 6.6 ; unaffected 0 < 6.6 ; unaffected 6.6.157 ≤ 6.6.* ; unaffected 6.12.110 ≤ 6.12.* ; unaffected 6.18.51 ≤ 6.18.* ; unaffected 7.2.5 ≤ 7.2.*

Sources

SourceLicence
CVE List (CVEProject cvelistV5)CVE Program Terms of Use
EPSS (FIRST.org)FIRST — attribution requested
ENISA EUVDENISA — reproduction authorised, source acknowledged
CERT-FR (ANSSI)Licence Ouverte / Etalab 2.0
NVD (NIST) via fkie-cad/nvd-json-data-feedsPublic domain — this product uses data from the NVD API but is not endorsed or certified by the NVD