v2
2026-11-02
修复KMSAN元数据查找 · v2
修正x86 KMSAN在KASLR下CPU entry area的CPU号解析,以及DEBUG_PREEMPT时preempt_count_add()递归导致的启动挂起。
原始补丁链接
子 Patch(4)
1/4
x86/mm: Don't randomize the CPU entry area with KMSAN
KMSAN启用时让CPU entry area按CPU顺序布局、禁用其KASLR随机化;因arch_kmsan_get_meta_or_null()用区偏移推CPU号,随机slot会越界调用get_cpu_entry_area()。
2/4
x86/kmsan: Use the per-CPU area base for metadata lookup
KMSAN元数据查找改以CPU_ENTRY_AREA_PER_CPU为基准计算CPU号并排除IDT页,校验CPU在nr_cpu_ids且possible内;修复按BASE计算把每CPU末页归到下一CPU及越界。
3/4
mm: Factor __pfn_valid() out of pfn_valid()
On 11/1/26 18:04, Viorel Cernateanu via B4 Relay wrote: > From: Viorel Cernateanu vrilutza@gmail.com > > KMSAN needs to validate a PFN during metadata lookup without entering > instrumented code. C
4/4
x86/kmsan: Don't call instrumented code from kmsan_virt_addr_valid()
kmsan_virt_addr_valid()改用preempt_disable_notrace()与__pfn_valid()验证PFN,退出用preempt_enable_no_resched_notrace();避免DEBUG_PREEMPT下插桩preempt_count_add触发递归。