CVE Catalog

CVE-2026-99145

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel's drm/xe driver, xe_bo_set_purgeable_shrinker() unconditionally transfers pages between the shrinkable and purgeable counts. When the purgeable state of a pinned BO changes (e.g., userspace madvising DONTNEED on a VMA of a BO pinned as a scanout buffer), one count underflows and the other remains permanently inflated after unpin.

Risk Assessment

Inconsistent shrinker counts can lead to incorrect memory management, leaks, or system instability.

Recommendation

Update the Linux kernel to a version with the fix (commit afe6bc012034123fd838328668e609bf57e46bd3), which only updates the purgeable flag for pinned BOs.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: drm/xe: Don't transfer shrinker pages for pinned bos on purgeable state change Pinned bos have their pages removed from the shrinker's shrinkable / purgeable counts on pin, and added back on unpin according to the bo's purgeable state at that time. However, xe_bo_set_purgeable_shrinker() unconditionally transfers pages between the shrinkable and purgeable counts. If the purgeable state of a pinned bo changes, for example by userspace madvising DONTNEED on a VMA of a bo that is also pinned as a scanout buffer, this underflows one count and, after unpin, leaves the other one permanently inflated. Only update the purgeable flag for pinned bos, and leave the page accounting to unpin. (cherry picked from commit afe6bc012034123fd838328668e609bf57e46bd3)

Vulnerability data from NVD (NIST) · CISA KEV · EPSS