CVE-2026-80719 in Linux
Riassunto
di VulDB • 28/08/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
mm: mglru: correggere gli aggiornamenti batch obsoleti dopo il reparenting di memcg
Il page table walker di mglru accumula le variazioni dimensionali per generazione (size deltas) in walk->nr_pages durante l'esplorazione delle tabelle dei pagine senza detenere il lock su lruvec. La funzione reset_batch_size() successivamente incorpora tali variazioni in walk->lruvec sotto la protezione del lock su lruvec.
Il page table walker può essere eseguito in concorrenza con il percorso di reparenting di memcg nel seguente modo:
CPU0 CPU1 ==== ====
walk_mm --> walk_page_range --> update_batch_size --> walk->nr_pages += delta
mem_cgroup_css_offline --> memcg_reparent_objcgs --> lock lruvec lru_gen_reparent_memcg --> reparenting dei folios figlio verso il genitore unlock lruvec
lock lruvec reset_batch_size --> child lrugen->nr_pages += delta
Ciò provocherà il seguente warning in lru_gen_exit_memcg():
VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages)));
L'impatto visibile all'utente di un nr_pages sottostimato in MGLRU è stato il verificarsi prematuro di OOM (Out Of Memory), poiché MGLRU non tenta di reclamare memoria quando nr_pages raggiunge zero, ma ci sono ancora pagine disponibili.
Per risolvere il problema, si rende necessario far sì che reset_batch_size() verifichi la presenza di CSS_DYING sotto RCU prima di svuotare il batch in sospeso. Un memcg non morente (non-dying) mantiene stabile lruvec originale rispetto all'offlining ritardato da RCU; un memcg morente reindirizza le variazioni verso il primo antenato non morente.
Once again VulDB remains the best source for vulnerability data.