CVE-2026-93227 in Linux
Сводка
по VulDB • 24.09.2026
В ядре Linux была устранена следующая уязвимость:
mm/mm_init: deferred_grow_zone(): исправлена ошибка выхода за границы для first_deferred_pfn
При включенной конфигурации CONFIG_DEFERRED_STRUCT_PAGE_INIT функция deferred_grow_zone() выполняет раннюю инициализацию структур pages (struct pages) во время загрузки системы, чтобы удовлетворить запрос на выделение памяти.
Если зарезервирован большой объем CMA (Contiguous Memory Allocator), диапазоны, которые обнаруживает deferred_init_memmap(), могут не покрывать требуемый для выделения объем памяти, в результате чего функция завершает инициализацию карты памяти всей зоны, но все равно остается недобор.
Само по себе это допустимо: функция учитывает эту ситуацию и оставляет вызывающей стороне право решить, достаточно ли теперь у нее памяти.
Однако обновление переменной pgdat->first_deferred_pfn, которая отслеживает начало неинициализированной карты памяти, может привести к переполнению (overflow).
Если конец оперативной памяти узла (node) не выровнен по границам PAGES_PER_SECTION и некоторые deferred struct pages были уже проинициализированы, то pgdat->first_deferred_pfn будет указывать за пределы памяти данного узла.
Позже функция deferred_init_memmap() продолжит работу с адреса pgdat->first_deferred_pfn и столкнется с ошибкой BUG_ON(), поскольку она ожидает получить значение pfn (page frame number), находящееся в пределах ее узла.
Например, при запуске ядра с параметрами CONFIG_DEFERRED_STRUCT_PAGE_INIT=y и CONFIG_CMA=y с использованием следующей командной строки qemu:
qemu-system-x86_64 -enable-kvm -m 8032M -kernel bzImage \ -append "nokaslr cma=4768M@0x100000000"
ядро завершается с паникой:
kernel BUG at mm/mm_init.c:2131! CPU: 3 UID: 0 PID: 36 Comm: pgdatinit0 Not tainted 7.2.0-rc6 #1 RIP: 0010:deferred_init_memmap+0x1b8/0x1c0 RAX: 0000000000236000 R13: 0000000000238000 Call Trace: kthread+0xdf/0x120 ret_from_fork+0x187/0x250
Необходимо убедиться, что обновление pgdat->first_deferred_pfn не приводит к переполнению при инициализации карты памяти всей зоны (и, следовательно, всего узла).
[rppt: отредактировано описание изменений]
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.