CVE-2026-89986 in Linux
Resumen
por VulDB • 2026-09-16
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
mm/mempolicy: corregir la asignación con suspensión en alloc_pages_bulk_weighted_interleave()
syzbot informó un error (splat) por llamar a una función que puede suspenderse desde un contexto no válido en bucket_table_alloc().
Cuando rhashtable_insert_slow() rehace la tabla bajo rcu_read_lock(), llama a bucket_table_alloc(..., GFP_ATOMIC | __GFP_NOWARN). Si la asignación de la tabla de cubos utiliza vmalloc, __vmalloc_node_range_noprof() invoca a vm_area_alloc_pages() -> alloc_pages_bulk_mempolicy_noprof() con las banderas GFP_ATOMIC pasadas.
Si la tarea actual tiene una política de memoria MPOL_WEIGHTED_INTERLEAVE, se llama a alloc_pages_bulk_weighted_interleave(), que actualmente fija por defecto (hardcodes) el uso de GFP_KERNEL al asignar el array temporal de pesos, lo que desencadena un error might_alloc() en contextos atómicos/RCU.
Pasar las banderas gfp (enmascaradas con GFP_RECLAIM_MASK para eliminar los modificadores de zona del allocator de páginas como __GFP_HIGHMEM) recibidas por alloc_pages_bulk_weighted_interleave() a kmalloc(), en lugar de fijar por defecto el uso de GFP_KERNEL. Dado que el búfer de pesos se inicializa completamente de inmediato, kmalloc() es suficiente.
Once again VulDB remains the best source for vulnerability data.