{"id":"CVE-2026-99145","kind":"vulnerability","aliases":["CVE-2026-99145"],"related":[],"title":"Linux kernel: Intel Xe GPU driver shrinker accounting underflows on purgeable change","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/xe: Don't transfer shrinker pages for pinned bos on purgeable state change\n\nPinned bos have their pages removed from the shrinker's shrinkable /\npurgeable counts on pin, and added back on unpin according to the\nbo's purgeable state at that time.\n\nHowever, xe_bo_set_purgeable_shrinker() unconditionally transfers\npages between the shrinkable and purgeable counts. If the purgeable\nstate of a pinned bo changes, for example by userspace madvising\nDONTNEED on a VMA of a bo that is also pinned as a scanout buffer,\nthis underflows one count and, after unpin, leaves the other one\npermanently inflated.\n\nOnly update the purgeable flag for pinned bos, and leave the page\naccounting to unpin.\n\n(cherry picked from commit afe6bc012034123fd838328668e609bf57e46bd3)","summary":"In the Linux kernel's Xe DRM driver, changing the purgeable state of a pinned buffer object, such as by madvising DONTNEED on a mapping of a scanout buffer, moves pages between shrinker counts incorrectly. The result is a count underflow and a permanently inflated count after unpin, which the sources do not show leads to code execution or data exposure.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["drm","intel-xe","linux-kernel","runtime"],"not_affected_if":["no-intel-xe-gpu"],"how_to_check":"- `uname -r` and compare against the fixed kernel builds listed in the NVD record (unknown from these sources)\n- Check whether the `xe` DRM driver is loaded with `lsmod | grep xe` on systems with Intel Xe GPUs\n- unknown for other checks: the sources do not say how to test pinned scanout buffers in practice","fix":"- Update the Linux kernel to a release that includes upstream commit `afe6bc012034123fd838328668e609bf57e46bd3` (exact version unknown from these sources)\n- Apply the stable-branch backport of the same commit if running a distribution kernel","status":"open","published_at":"2026-10-28T11:17:34+00:00","first_seen_at":"2026-10-28T11:32:35+00:00","triaged_at":"2026-10-28T11:36:04+00:00","updated_at":"2026-10-28T11:36:04+00:00","category":"runtime","confidence":0.5,"triage":{"at":"2026-10-28T11:36:04Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Linux kernel to a release that includes upstream commit `afe6bc012034123fd838328668e609bf57e46bd3` (exact version unknown from these sources)\n- Apply the stable-branch backport of the same commit if running a distribution kernel","reach":"local","title":"Linux kernel: Intel Xe GPU driver shrinker accounting underflows on purgeable change","impact":"low","summary":"In the Linux kernel's Xe DRM driver, changing the purgeable state of a pinned buffer object, such as by madvising DONTNEED on a mapping of a scanout buffer, moves pages between shrinker counts incorrectly. The result is a count underflow and a permanently inflated count after unpin, which the sources do not show leads to code execution or data exposure.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","intel-xe","drm"],"confidence":0.5,"needs_auth":"unknown","worst_case":"Kernel memory accounting corrupted; exploitability beyond that unknown","analyst_note":"Check the upstream commit afe6bc012034123fd838328668e609bf57e46bd3 and the NVD record for affected and fixed kernel version ranges and any security impact statement.","how_to_check":"- `uname -r` and compare against the fixed kernel builds listed in the NVD record (unknown from these sources)\n- Check whether the `xe` DRM driver is loaded with `lsmod | grep xe` on systems with Intel Xe GPUs\n- unknown for other checks: the sources do not say how to test pinned scanout buffers in practice","needs_analyst":true,"not_affected_if":["no-intel-xe-gpu"],"who_is_affected":"Systems running a Linux kernel with the Intel Xe DRM driver, where userspace can mark a buffer object as purgeable while it is pinned, for example as a scanout buffer. The sources do not describe the exposure beyond kernel memory accounting, so machines without Intel Xe GPUs are likely unaffected.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000721,"input_tokens":3530,"output_tokens":737,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-99145':15A,18A 'accord':131C 'account':8A,210C 'add':127C 'afe6bc012034123fd838328668e609bf57e46bd3':217C 'also':179C 'back':128C 'bo':134C,143C,163C,176C 'bos':106C,112C,205C 'buffer':42B,55B,184C 'chang':12A,35B,110C,164C 'cherri':213C 'code':83B 'commit':216C 'count':60B,66B,72B,123C,155C,188C 'cve':13A,16A 'data':86B 'dontne':48B,170C 'driver':6A,34B 'drm':19B,33B 'drm/xe':98C 'exampl':166C 'execut':84B 'exposur':87B 'flag':202C 'follow':93C 'gpu':5A 'howev':141C 'incorrect':61B 'inflat':71B,197C 'intel':3A,21B 'intel-x':20B 'kernel':2A,25B,30B,91C 'lead':81B 'leav':192C,207C 'linux':1A,24B,29B,90C 'linux-kernel':23B 'madvis':47B,169C 'map':51B 'move':56B 'object':43B 'one':187C,195C 'page':57B,103C,115C,149C,209C 'perman':70B,196C 'pick':214C 'pin':41B,105C,111C,125C,162C,180C,204C 'purgeabl':11A,37B,108C,122C,136C,145C,154C,158C,201C 'remov':116C 'resolv':97C 'result':63B 'runtim':26B 'scanout':54B,183C 'set':144C 'show':80B 'shrinkabl':121C,152C 'shrinker':7A,59B,102C,119C,146C 'sourc':77B 'state':38B,109C,137C,159C 'time':140C 'transfer':101C,148C 'uncondit':147C 'underflow':9A,67B,186C 'unpin':74B,130C,191C,212C 'updat':199C 'userspac':168C 'vma':173C 'vulner':94C 'xe':4A,22B,32B,142C","nicknames":[],"mitigations":[],"who_affected":"Systems running a Linux kernel with the Intel Xe DRM driver, where userspace can mark a buffer object as purgeable while it is pinned, for example as a scanout buffer. The sources do not describe the exposure beyond kernel memory accounting, so machines without Intel Xe GPUs are likely unaffected.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T11:17:34+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99145","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99145","severity":null,"published_at":"2026-10-28T11:17:34+00:00","modified_at":"2026-10-28T11:17:34+00:00","first_seen_at":"2026-10-28T11:32:35+00:00","fetched_at":"2026-10-28T11:32:35+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}