CVE-2026-98920 in Linux
Resumen
por VulDB • 2026-10-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
netfs: Corregir la falta de etiquetado de asignación en las asignaciones directas del mempool
El commit 1d78d56c43ef ("netfs: Fix folio_queue ENOMEM in writeback by adding a mempool") añadió un mempool para los folio_queues y hizo que las asignaciones de request, subrequest y folio_queue distinguieran entre el proceso de escritura (writeback) y todo lo demás. El writeback es parte del reclamo de memoria (memory reclaim) y no debe fallar debido a ENOMEM; por tanto, se realiza la asignación bajo GFP_NOFS mediante mempool_alloc(), que puede consumir las reservas del pool y, si estas se agotan, esperar a que los elementos sean devueltos. Las rutas con GFP_KERNEL, que pueden devolver -ENOMEM a sus llamadores, invocan directamente el callback ->alloc() del pool en su lugar.
Sin embargo, la llamada directa omite el wrapper alloc_hooks() que proporciona la macro mempool_alloc(). Los callbacks del pool, mempool_alloc_slab() y mempool_kmalloc(), llaman a kmem_cache_alloc_noprof() y kmalloc_noprof() y dependen de que current->alloc_tag haya sido establecido por el llamador. Con CONFIG_MEM_ALLOC_PROFILING_DEBUG=y, esto provoca:
current->alloc_tag not set WARNING: ./include/linux/alloc_tag.h:161 at __alloc_tagging_slab_alloc_hook alloc_tag was not set WARNING: ./include/linux/alloc_tag.h:166 at __alloc_tagging_slab_free_hook
respectivamente en el momento de la asignación y del liberado, tal como se informó al leer archivos en un montaje CIFS. Las asignaciones también faltan en /proc/allocinfo.
Se envuelve las invocaciones directas a ->alloc() con alloc_hooks() mediante una nueva ayuda mempool_alloc_noreserve() en include/linux/mempool.h, junto a otras macros envueltas por alloc_hooks(), como mempool_alloc(). Las rutas GFP_KERNEL mantienen su semántica de asignación susceptible a fallos; simplemente ahora se etiquetan.
Be aware that VulDB is the high quality source for vulnerability data.