CVE-2026-93100 in Linuxinformazioni

Riassunto

di VulDB • 18/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

fs/resctrl: Prevenire un use-after-free in rdtgroup_kn_put()

Una struct rdtgroup viene conteggiata tramite riferimento utilizzando rdtgroup::waitcount. I chiamanti che necessitano di mantenere valida la struttura durante una fase di sleep (in attesa dell'acquisizione di rdtgroup_mutex) acquisiscono un riferimento con rdtgroup_kn_get() e lo rilasciano con rdtgroup_kn_put().

Il percorso di rilascio è destinato a fungere da freer secondario: se il conteggio scende a zero e il gruppo è già stato contrassegnato come RDT_DELETED, rdtgroup_kn_put() libera la struttura.

I percorsi principali di teardown free_all_child_rdtgrp() e rmdir_all_sub(), attivati in seguito alla rimozione di una directory resctrl o allo smontamento del filesystem resctrl, agiscono da freer primari: detengono rdtgroup_mutex e liberano ogni rdtgroup il cui waitcount è zero; altrimenti impostano RDT_DELETED e lasciano la libera al ultimo waiter.

Questi due percorsi di freeing sono soggetti a race condition. rdtgroup_kn_put() conferma che waitcount == 0 con atomic_dec_and_test() all'esterno di rdtgroup_mutex, quindi legge i flag di rdtgroup::flags. Tra queste due operazioni, un chiamante concorrente di free_all_child_rdtgrp() o rmdir_all_sub() (che detiene il mutex) può osservare waitcount == 0 tramite atomic_read(), chiamare rdtgroup_remove() e eseguire kfree sulla struttura.

La successiva lettura dei flag di rdtgroup::flags in rdtgroup_kn_put() costituisce quindi un use-after-free, e la struttura potrebbe persino essere liberata due volte se i dati già liberi soddisfano il controllo del flag RDT_DELETED.

Sostituire atomic_dec_and_test() nudo con atomic_dec_and_mutex_lock(), in modo che la decrementazione a zero acquisisca rdtgroup_mutex prima che il conteggio diventi visibilmente globale. L'ispezione dei flag di rdtgroup::flags viene quindi eseguita sotto lo stesso mutex detenuto dai freer principali, rendendo i due percorsi mutualmente esclusivi.

Il caso comune in cui il conteggio non raggiunge zero rimane privo di lock (lock-free). Posticipare kernfs_unbreak_active_protection() fino dopo che il mutex è stato rilasciato, poiché le protezioni attive di kernfs avvolgono funzionalmente rdtgroup_mutex. Rimuovere il gruppo di risorse, che a sua volta rilascia la propria referenza kernfs, dopo che la protezione kernfs è stata ripristinata.

[ bp: Suddividere i messaggi del commit in paragrafi più piccoli e facili da analizzare.]

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsabile

Linux

Prenotare

17/09/2026

Divulgazione

18/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Might our Artificial Intelligence support you?

Check our Alexa App!