CVE-2026-93237 in Linux
要約
〜によって VulDB • 2026年09月24日
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の物理アドレス空間ビット数(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を使用する際にmemmap_init_zone_device()をクラッシュさせるアドレス空間の最上位領域も選択していました[1];コミット2969b42c8f99("LoongArch/mm: vmemmap to maximal folio sizeにアライン")は現在のLoongson-3C6000設定においてその領域を範囲内に保ちますが、cpu_pabitsが小さいCPU(例:Loongson-2Kシリーズ)はまだ影響を受けています。
DIRECT_MAP_PHYSMEM_ENDをvmemmapでカバーされる物理レンジである(1ULL << (cpu_pabits + 1)) - 1として定義します。CONFIG_SPARSEMEM下では、これはコミットf3336b48cf9d("riscv: mm: Define DIRECT_MAP_PHYSMEM_END")と同様に(1ULL << MAX_PHYSMEM_BITS) - 1で制限されます。
[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.