Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

module: Use RCU in module_kallsyms_on_each_symbol().

module::kallsyms can be accessed under RCU assumption.

Use rcu_dereference() to access module::kallsyms.
Update callers.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250108090457.512198-9-bigeasy@linutronix.de
Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>

authored by

Sebastian Andrzej Siewior and committed by
Petr Pavlu
cdd9335c f27d8ed6

+2 -4
+2 -4
kernel/module/kallsyms.c
··· 476 476 if (modname && strcmp(modname, mod->name)) 477 477 continue; 478 478 479 - /* Use rcu_dereference_sched() to remain compliant with the sparse tool */ 480 - preempt_disable(); 481 - kallsyms = rcu_dereference_sched(mod->kallsyms); 482 - preempt_enable(); 479 + kallsyms = rcu_dereference_check(mod->kallsyms, 480 + lockdep_is_held(&module_mutex)); 483 481 484 482 for (i = 0; i < kallsyms->num_symtab; i++) { 485 483 const Elf_Sym *sym = &kallsyms->symtab[i];