Executive brief
The Linux kernel can crash when probing devdax (device DAX) storage devices due to incorrect architecture-specific memory mapping handling. This causes kernel panics during device initialization, disrupting system availability and preventing access to persistent memory devices.
Technical details
The vulnerability exists in mm/vmemmap/devdax code where vmemmap_populate_compound_pages() does not account for architecture-specific memory mapping implementations. On PowerPC systems using hash translation, vmemmap mappings are bolted hardware page table entries rather than init_mm page table entries; the function assumes generic x86-like page table structure, causing an invalid memory write access. The crash occurs during dev_dax_probe() when initializing zone device pages. The fix restricts the optimized vmemmap feature to architectures that support HUGETLB_PAGE_OPTIMIZE_VMEMMAP, ensuring only architectures with compatible mapping mechanisms use the optimization.
Affected products
- Linux Linux kernel 6.3.0-rc5 and later with devdax vmemmap optimization
Timeline
- 2025-10-22: disclosed
- 2024-01-01: patched: Fix committed in commit 4917f55b4ef9 and subsequent patches restricting feature to compatible architectures