CVE-2026-89986 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
mm/mempolicy: исправлено вызов функции сна в alloc_pages_bulk_weighted_interleave()
syzbot сообщил о срабатывании ошибки «вызов функции, допускающей сон (sleeping function), из недопустимого контекста» (splat) в bucket_table_alloc().
Когда rhashtable_insert_slow() выполняет рехэширование таблицы под блокировкой rcu_read_lock(), она вызывает bucket_table_alloc(..., GFP_ATOMIC | __GFP_NOWARN). Если выделение памяти для таблицы корзин использует vmalloc, то __vmalloc_node_range_noprof() вызывает vm_area_alloc_pages() -> alloc_pages_bulk_mempolicy_noprof() с переданными флагами GFP_ATOMIC.
Если у текущего процесса установлена политика памяти MPOL_WEIGHTED_INTERLEAVE, вызывается alloc_pages_bulk_weighted_interleave(), которая в настоящее время жестко задает (hardcodes) флаг GFP_KERNEL при выделении временного массива весов, что приводит к срабатыванию might_alloc() в атомарных контекстах или контекстах RCU.
Необходимо передавать флаги gfp (с маскированием через GFP_RECLAIM_MASK для удаления модификаторов зон аллокатора страниц, таких как __GFP_HIGHMEM), полученные alloc_pages_bulk_weighted_interleave(), в kmalloc() вместо жесткой установки GFP_KERNEL. Поскольку буфер весов сразу же полностью инициализируется, функции kmalloc() достаточно.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.