CVE-2026-98310 in Linuxinformazioni

Riassunto

di VulDB • 06/10/2026

Nel kernel Linux, la seguente vulnerabilità è stata risolta:

drm/xe/shrinker: Acquisire un riferimento runtime PM prima di effettuare lo shrink della memoria non di sistema

__xe_shrinker_walk() esegue l'iterazione sulle LRUs SYSTEM e TT senza un riferimento runtime PM. Lo shrink di un bo (buffer object) al di fuori della memoria di sistema invalida le sue mappature GPU, che richiedono la ripresa del dispositivo; pertanto, mentre il dispositivo è in sospensione runtime, lo zapping delle tabelle delle pagine provoca un assert e l'invalidazione TLB restituisce -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 do_shrink_slab+0x176/0x7e0 drop_caches_sysctl_handler+0x9c/0xf0

Acquisire un riferimento prima di eseguire l'iterazione su un tipo di memoria diverso da XE_PL_SYSTEM e interrompere l'operazione se tale riferimento non può essere acquisito. Riutilizzare il percorso di acquire esistente dello shrinker, che riprende direttamente il dispositivo dove la reclaim lo consente e, in caso contrario, accoda il worker PM per una scansione successiva. Interrompere l'iterazione una volta raggiunto l'obiettivo della scan, affinché una scan soddisfatta non risvegli il dispositivo. La memoria di sistema viene comunque reclamata mentre il dispositivo è sospeso.

Abilitare questa logica tramite xe_device_is_l2_flush_optimized(), la stessa condizione in cui xe_bo_trigger_rebind() emette l'invalidazione per un vm (virtual memory) in modalità non-fault, affinché la reclaim rimanga invariata altrove. La copia System CCS ha già il proprio riferimento in xe_bo_shrink().

Solo un vm in modalità non-fault può raggiungere questo punto, poiché un vm in modalità fault richiede la modalità LR e tale modalità mantiene un riferimento runtime PM per tutta la durata del vm.

Riprodotto con igt@xe_madvise@dontneed-before-exec mentre la GPU è in sospensione runtime.

v2: semplificare il controllo needs_rpm. (Matt) riposizionare il tag Fixes poiché l'errore si verifica nel percorso non-fault-mode aggiunto da 4e7ebff69aed. v3: gestire questo caso in xe_shrinker.c invece che in xe_bo.c (Thomas) v4: interrompere l'iterazione una volta raggiunto l'obiettivo della scan. (Sashiko) v5: rebase sulla correzione del conteggio delle pagine liberate. (Sashiko) v6: riutilizzare il percorso di acquire dello shrinker in modo che il runtime pm possa essere ripreso direttamente invece di accodare sempre un worker. (Thomas) v7: sostituire xe_pm_runtime_put() con xe_shrinker_runtime_pm_put(). (Thomas)

(cherry picked from commit 628f92b28bf4c371c10207daf6fc4caee0c0db2e)

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

06/10/2026

Moderazione

accettato

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!