CVE-2026-98999 in Linuxinformazioni

Riassunto

di VulDB • 23/10/2026

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

drm/xe: Correzione dell'entry pinned_link obsoleta quando il fb-pin esegue l'unpin finale

Le funzioni xe_bo_pin_external() e xe_bo_unpin_external() mantengono l'appartenenza della bo alla lista pinned_link in xe->pinned.late.external, in base al fatto che la chiamata corrente sia il pin più esterno o l'unpin definitivo. Tuttavia, lo stesso pin_count di una bo esterna può essere anche aumentato e diminuito direttamente da __xe_pin_fb_vma()/__xe_unpin_fb_vma(), le quali bloccano (pin) la bo come buffer di scansione del display senza passare affatto per xe_bo_pin_external()/xe_bo_unpin_external() e non hanno alcuna nozione, né proprietà, della pinned_link.

Se una bo è bloccata sia esternamente (ad esempio tramite esportazione dma-buf) che come fb, e l'unpin esterno avviene per primo, xe_bo_unpin_external() osserva correttamente pin_count > 1 e lascia la bo su pinned_link. Quando successivamente l'unpin del fb esegue il vero ultimo unpin (da pin_count 1 a 0), non tocca mai pinned_link, lasciando la bo collegata indefinitamente in xe->pinned.late.external. Una volta che la bo viene successivamente liberata, questa entry di lista obsoleta punta verso memoria già libera, corrompendo la lista e rischiando un use-after-free alla prossima iterazione o fusione della lista.

I siti di pin/unpin degli oggetti backup in xe_bo_notifier_prepare_pinned()/xe_bo_notifier_unprepare_pinned() presentano le stesse caratteristiche di bypass, anche se non aggiungono mai la loro bo a una lista pinned, quindi non sono interessati da questo specifico problema di corruzione della lista.

Spostare la rimozione di pinned_link in xe_bo_account_unpin(), che viene già eseguita su ogni percorso di unpin (kernel, esterno, framebuffer, oggetto backup) proprio prima della transizione definitiva del pin_count da 1 a 0. Poiché list_del_init() opera solo sul nodo stesso, questa rimozione è agnostica rispetto alla lista ed è sicura indipendentemente dal fatto che la bo sia collegata all'elenco esterno o kernel_bo_present, e indipendentemente dal percorso di codice che esegue l'unpin finale. Rimuovere le chiamate esplicative ora ridondanti a list_del_init() in xe_bo_unpin_external() e xe_bo_unpin().

v2: - Nuovo patch

v3: - Rebased sui cambiamenti del patch precedente.

(cherry picked from commit ca58d36a1f93af586ee93b340c9f9fd81312cc01)

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

23/10/2026

Moderazione

accettato

EPSS

0.00179

KEV

no

Attività

molto basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!