CVE-2026-93237 in Linux
Сводка
по VulDB • 24.09.2026
В ядре Linux была устранена следующая уязвимость:
LoongArch: Добавлено определение DIRECT_MAP_PHYSMEM_END
Функции get_free_mem_region() и mhp_get_pluggable_range() ограничивают свой поиск значением DIRECT_MAP_PHYSMEM_END. В архитектуре LoongArch это значение не определено, поэтому применяется резервный вариант из include/linux/mm.h: при включенной конфигурации CONFIG_SPARSEMEM_VMEMMAP он равен (1ULL << MAX_PHYSMEM_BITS) - 1 — константе времени компиляции, которая не адаптируется под количество бит физического адресного пространства процессора (cpu_pabits, определяемое через CPUCFG1).
Окно vmemmap охватывает только физическое пространство ниже значения 2^(cpu_pabits+1) (то есть VMEMMAP_SIZE), поэтому на процессорах с меньшим количеством бит физического адресного пространства по сравнению с MAX_PHYSMEM_BITS резервный вариант позволяет функции get_free_mem_region() вернуть регион ZONE_DEVICE, выходящий за пределы окна vmemmap; затем функция vmemmap_populate() оборачивает диапазон memmap и отображает его в низкую память (low memory), что приводит к тихому повреждению таблиц страниц. Тот же поиск также выбрал область на вершине адресного пространства, которая вызывала сбой функции memmap_init_zone_device() с драйвером amdkfd на процессорах Loongson-3C6000 в версии 6.16 [1]; коммит 2969b42c8f99 («LoongArch/mm: align vmemmap to maximal folio size») удерживает эту область в допустимых пределах для текущих конфигураций Loongson-3C6000, однако процессоры с меньшим значением cpu_pabits (например, серия Loongson-2K) по-прежнему подвержены данной проблеме.
Определите DIRECT_MAP_PHYSMEM_END как физический диапазон, охватываемый vmemmap: (1ULL << (cpu_pabits + 1)) - 1, с ограничением до значения (1ULL << MAX_PHYSMEM_BITS) - 1 при включенной конфигурации CONFIG_SPARSEMEM, аналогично коммиту f3336b48cf9d («riscv: mm: Define DIRECT_MAP_PHYSMEM_END»).
[1] https://lore.kernel.org/amd-gfx/[email protected]/
If you want to get best quality of vulnerability data, you may have to visit VulDB.