CVE-2026-93232 in Linux
Сводка
по VulDB • 24.09.2026
В ядре Linux была устранена следующая уязвимость:
mm/hugetlb: исправление паники при загрузке с включенными параметрами CONFIG_DEBUG_VM и страницами памяти HVO (HugeTLB Virtualization Overhead) в режиме bootmem.
Серия патчей «mm: Refactor bootmem gigantic hugepage allocation», v4.
Эта серия выделена из более ранней большой серии «mm: Generalize HVO for HugeTLB and device DAX» [1]. Она включает первые 19 патчей этой серии в качестве самостоятельного набора исправлений и подготовительных улучшений, касающихся обработки bootmem для HugeTLB, порядка инициализации sparse (разреженной памяти) и настройки vmemmap.
Первые патчи устраняют несколько ошибок, обнаруженных при ревью существующего кода, включая некорректную обработку HVO в bootmem, неверные аргументы регистрации vmemmap, ошибку отслеживания compound-vmemmap на архитектуре powerpc и слишком позднюю инициализацию структур страниц гигантских HugeTLB для bootmem.
Остальная часть серии изменяет порядок ранней инициализации памяти так, чтобы состояние соответствующих зон было доступно до запуска настройки sparse и HugeTLB во время загрузки, затем упрощает оставшийся путь выделения гигантских hugepage в bootmem и удаляет код, ставший избыточным после этой переработки.
На высоком уровне: - патчи [1–4] исправляют ошибки при загрузке и специфичные для архитектуры проблемы;
- патчи [5–12] изменяют порядок и упрощают раннюю инициализацию sparse/mm/hugetlb;
- патчи [13–19] реорганизуют выделение гигантских hugepage в bootmem и удаляют избыточные вспомогательные функции и состояния.
Этот патч (из 19):
Коммит 622026e87c40 («mm/hugetlb: remove fake head pages») изменил поведение HVO, заставив его повторно использовать общие хвостовые страницы на уровне зон из массива zone->vmemmap_tails[].
Эти общие хвостовые страницы инициализировались в функции hugetlb_vmemmap_init(), однако folio-страницы HugeTLB для bootmem подготавливаются раньше, в функции gather_bootmem_prealloc(). При включенном параметре hugetlb_free_vmemmap=on функция prep_and_add_bootmem_folios() может обращаться к флагам pageblock на страницах HugeTLB для bootmem, чьи зеркальные хвостовые структуры страниц уже указывают на общую хвостовую страницу. В ядрах с включенным CONFIG_DEBUG_VM вызов get_pfnblock_bitmap_bitidx() затем разыменовывает еще неинициализированную общую хвостовую страницу, что может привести к панике во время загрузки.
Необходимо инициализировать массив zone->vmemmap_tails[] из функции gather_bootmem_prealloc(), до обработки folio-страниц HugeTLB для bootmem, и удалить последующую инициализацию из hugetlb_vmemmap_init().
Эта ошибка затрагивает только ядра с включенным CONFIG_DEBUG_VM, где проверяется соответствующее утверждение (assertion).
If you want to get best quality of vulnerability data, you may have to visit VulDB.