On 6/10/25 6:33 PM, Sebastian Andrzej Siewior wrote: > The per-CPU data section is handled differently than the other sections. > The memory allocations requires a special __percpu pointer and then the > section is copied into the view of each CPU. Therefore the SHF_ALLOC > flag is removed to ensure move_module() skips it. > > Later, relocations are applied and apply_relocations() skips sections > without SHF_ALLOC because they have not been copied. This also skips the > per-CPU data section. > The missing relocations result in a NULL pointer on x86-64 and very > small values on x86-32. This results in a crash because it is not > skipped like NULL pointer would and can't be dereferenced. > > Such an assignment happens during static per-CPU lock initialisation > with lockdep enabled. > > Allow relocation processing for the per-CPU section even if SHF_ALLOC is > missing. > > Reported-by: kernel test robot <oliver.s...@intel.com> > Closes: https://lore.kernel.org/oe-lkp/202506041623.e45e4f7d-...@intel.com > Fixes: 1a6100caae425 ("Don't relocate non-allocated regions in modules.") > #v2.6.1-rc3 > Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de>
Reviewed-by: Petr Pavlu <petr.pa...@suse.com> -- Thanks, Petr