{"id":33379,"date":"2026-10-06T20:31:53","date_gmt":"2026-10-06T12:31:53","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98310"},"modified":"2026-10-06T20:31:53","modified_gmt":"2026-10-06T12:31:53","slug":"cve-2026-98310","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98310","title":{"rendered":"CVE-2026-98310 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndrm\/xe\/shrinker: Take"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/xe\/shrinker: Take a runtime PM ref before shrinking non-system memory<\/p>\n<p>__xe_shrinker_walk() walks the SYSTEM and TT LRUs without a runtime PM<br \/>\nreference.  Shrinking a bo outside system memory invalidates its GPU<br \/>\nmappings, which needs the device resumed, so while it is runtime<br \/>\nsuspended the page table zap trips an assert and the TLB invalidation<br \/>\nreturns -ENODEV:<\/p>\n<p>  WARNING: drivers\/gpu\/drm\/xe\/xe_bo.c:770 at xe_bo_move_notify+0x1fc\/0x450 [xe]<br \/>\n   xe_bo_shrink+0x20f\/0x2b0 [xe]<br \/>\n   __xe_shrinker_walk+0x174\/0x410 [xe]<br \/>\n   xe_shrinker_scan+0x10c\/0x1e0 [xe]<br \/>\n   do_shrink_slab+0x176\/0x7e0<br \/>\n   drop_caches_sysctl_handler+0x9c\/0xf0<\/p>\n<p>Take a reference before walking a memory type other than XE_PL_SYSTEM<br \/>\nand stop there if it cannot be acquired.  Reuse the shrinker&#8217;s existing<br \/>\nacquire path, which resumes the device directly where reclaim allows<br \/>\nthat and otherwise queues the PM worker for a later scan.  Stop the walk<br \/>\nonce the scan target is met, so a satisfied scan does not wake the<br \/>\ndevice.  System memory is still reclaimed while the device is suspended.<\/p>\n<p>Gate this on xe_device_is_l2_flush_optimized(), the same condition under<br \/>\nwhich xe_bo_trigger_rebind() issues the invalidation for a non-fault-mode<br \/>\nvm, so reclaim is unaffected elsewhere.  The System CCS copy already has<br \/>\nits own reference in xe_bo_shrink().<\/p>\n<p>Only a non-fault-mode vm can reach this, since a fault-mode vm requires<br \/>\nLR mode and that holds a runtime PM reference for the vm&#8217;s lifetime.<\/p>\n<p>Reproduced with igt@xe_madvise@dontneed-before-exec while the GPU is<br \/>\nruntime suspended.<\/p>\n<p>v2: simplify needs_rpm check. (Matt)<br \/>\n    retarget Fixes tag since the issue occurs with the non-fault-mode<br \/>\n    path added by 4e7ebff69aed.<br \/>\nv3: handle this in xe_shrinker.c instead of xe_bo.c (Thomas)<br \/>\nv4: stop the walk once the scan target is met. (Sashiko)<br \/>\nv5: rebase on the freed page accounting fix. (Sashiko)<br \/>\nv6: reuse the shrinker acquire path so runtime pm can be resumed<br \/>\n    directly instead of always queueing a worker. (Thomas)<br \/>\nv7: replace xe_pm_runtime_put() with xe_shrinker_runtime_pm_put(). (Thomas)<\/p>\n<p>(cherry picked from commit 628f92b28bf4c371c10207daf6fc4caee0c0db2e)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/xe\/shrinker: Take a runtime PM ref before shrinking non-system memory<\/p>\n<p>__xe_shrinker_walk() walks the SYSTEM and TT LRUs withou<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33379","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}