CVE-2026-98310

CVE-2026-98310

published October 6, 2026

CVSS
—
EPSS
0%
Percentile
5.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

drm/xe/shrinker: Take a runtime PM ref before shrinking non-system memory

__xe_shrinker_walk() walks the SYSTEM and TT LRUs without a runtime PM

reference. Shrinking a bo outside system memory invalidates its GPU

mappings, which needs the device resumed, so while it is runtime

suspended the page table zap trips an assert and the TLB invalidation

returns -ENODEV:

WARNING: drivers/gpu/drm/xe/xe_bo.c:770 at xe_bo_move_notify+0x1fc/0x450 [xe]

xe_bo_shrink+0x20f/0x2b0 [xe]

__xe_shrinker_walk+0x174/0x410 [xe]

xe_shrinker_scan+0x10c/0x1e0 [xe]

do_shrink_slab+0x176/0x7e0

drop_caches_sysctl_handler+0x9c/0xf0

Take a reference before walking a memory type other than XE_PL_SYSTEM

and stop there if it cannot be acquired. Reuse the shrinker's existing

acquire path, which resumes the device directly where reclaim allows

that and otherwise queues the PM worker for a later scan. Stop the walk

once the scan target is met, so a satisfied scan does not wake the

device. System memory is still reclaimed while the device is suspended.

Gate this on xe_device_is_l2_flush_optimized(), the same condition under

which xe_bo_trigger_rebind() issues the invalidation for a non-fault-mode

vm, so reclaim is unaffected elsewhere. The System CCS copy already has

its own reference in xe_bo_shrink().

Only a non-fault-mode vm can reach this, since a fault-mode vm requires

LR mode and that holds a runtime PM reference for the vm's lifetime.

Reproduced with igt@xe_madvise@dontneed-before-exec while the GPU is

runtime suspended.

v2: simplify needs_rpm check. (Matt)

retarget Fixes tag since the issue occurs with the non-fault-mode

path added by 4e7ebff69aed.

v3: handle this in xe_shrinker.c instead of xe_bo.c (Thomas)

v4: stop the walk once the scan target is met. (Sashiko)

v5: rebase on the freed page accounting fix. (Sashiko)

v6: reuse the shrinker acquire path so runtime pm can be resumed

directly instead of always queueing a worker. (Thomas)

v7: replace xe_pm_runtime_put() with xe_shrinker_runtime_pm_put(). (Thomas)

(cherry picked from commit 628f92b28bf4c371c10207daf6fc4caee0c0db2e)

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00162 · 5.1th percentile
Published
2026-10-06T13:18Z
References (2)
EPSS history
Timeline
  • 07 OCT 03:43Z
    EPSS moved — → 0%
    epss
  • 06 OCT 08:46Z
    drm/xe/shrinker: Take a runtime PM ref before shrinking non-system memory
    cvelistv5