mirror of
https://github.com/torvalds/linux.git
synced 2025-08-16 22:51:39 +02:00
![]() 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.sang@intel.com> Closes: https://lore.kernel.org/oe-lkp/202506041623.e45e4f7d-lkp@intel.com Fixes: 1a6100caae425 ("Don't relocate non-allocated regions in modules.") #v2.6.1-rc3 Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Reviewed-by: Petr Pavlu <petr.pavlu@suse.com> Link: https://lore.kernel.org/r/20250610163328.URcsSUC1@linutronix.de Signed-off-by: Daniel Gomez <da.gomez@samsung.com> Message-ID: <20250610163328.URcsSUC1@linutronix.de> |
||
---|---|---|
.. | ||
debug_kmemleak.c | ||
decompress.c | ||
dups.c | ||
internal.h | ||
kallsyms.c | ||
Kconfig | ||
kdb.c | ||
kmod.c | ||
livepatch.c | ||
main.c | ||
Makefile | ||
procfs.c | ||
signing.c | ||
stats.c | ||
strict_rwx.c | ||
sysfs.c | ||
tracking.c | ||
tree_lookup.c | ||
version.c |