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

Reply via email to