CVE-2026-93237 in Linux
요약
\~에 의해 VulDB • 2026. 09. 24.
리눅스 커널에서 다음 취약점이 해결되었습니다:
LoongArch: DIRECT_MAP_PHYSMEM_END 정의 추가
get_free_mem_region() 및 mhp_get_pluggable_range()는 검색 범위를 DIRECT_MAP_PHYSMEM_END로 제한합니다. LoongArch에서는 이를 정의하지 않았으므로 include/linux/mm.h의 폴백(fallback)이 적용됩니다. CONFIG_SPARSEMEM_VMEMMAP 설정 하에서 이는 (1ULL << MAX_PHYSMEM_BITS) - 1이며, CPU의 물리 주소 공간 비트(cpu_pabits, CPUCFG1에서 프로브됨)에 따라 동적으로 조정되지 않는 컴파일 타임 상수입니다.
vmemmap 창은 2^(cpu_pabits+1)(즉, VMEMMAP_SIZE) 미만의 물리적 영역만 커버하므로, MAX_PHYSMEM_BITS보다 적은 물리 주소 비트를 가진 CPU에서는 폴백으로 인해 get_free_mem_region()이 vmemmap 창 외부의 ZONE_DEVICE 영역을 반환할 수 있습니다. 이후 vmemmap_populate()는 memmap 범위를 감싸서 저메모리에 매핑하며 페이지 테이블을 묵시적으로 손상시킵니다. 동일한 검색 로직은 Loongson-3C6000에서 amdkfd 사용 시 6.16 버전[1]에서 memmap_init_zone_device()를 크래시시킨 주소 공간 상단 영역도 선택했습니다. 커밋 2969b42c8f99("LoongArch/mm: align vmemmap to maximal folio size")는 현재 Loongson-3C6000 구성에서 해당 영역을 범위 내에 유지하지만, cpu_pabits가 더 작은 CPU(예: Loongson-2K 시리즈)는 여전히 영향을 받습니다.
DIRECT_MAP_PHYSMEM_END를 vmemmap이 커버하는 물리적 범위로 정의합니다. 이는 (1ULL << (cpu_pabits + 1)) - 1이며, CONFIG_SPARSEMEM 설정 하에서 (1ULL << MAX_PHYSMEM_BITS) - 1로 제한됩니다. 이는 커밋 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.