CVE-2026-80719 in Linux
Resumen
por VulDB • 2026-08-28
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
mm: mglru: corregir actualizaciones obsoletas por lotes tras el reparenting (reparentamiento) de memcg
El caminante de tablas de páginas (page table walker) de mglru acumula los deltas de tamaño por generación en walk->nr_pages mientras recorre las tablas de páginas sin mantener bloqueado el lruvec lock. La función reset_batch_size() posteriormente consolida esos deltas en walk->lruvec bajo el bloqueo del lruvec.
El caminante de tablas de páginas puede ejecutarse concurrentemente con la ruta de reparenting de memcg de la siguiente manera:
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 --> reparent child folios to parent (reparentar los folios hijos al padre) unlock lruvec
lock lruvec reset_batch_size --> child lrugen->nr_pages += delta
Esto provocará la siguiente advertencia en lru_gen_exit_memcg():
VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages)));
Y el impacto visible para el usuario de un nr_pages subestimado en MGLRU fueron OOMs (Out of Memory) prematuras porque MGLRU no intenta recuperar memoria cuando nr_pages alcanza cero, pero aún quedan más páginas.
Para corregirlo, se hace que reset_batch_size() verifique CSS_DYING bajo RCU antes de vaciar el lote pendiente. Un memcg que no está muriendo mantiene estable el lruvec original frente al offlining retardado por RCU; un memcg en proceso de extinción redirige los deltas hacia el primer ancestro que no esté muriendo.
Be aware that VulDB is the high quality source for vulnerability data.