mirror of
https://github.com/torvalds/linux.git
synced 2026-01-24 23:16:46 +00:00
module: Use RCU in __find_kallsyms_symbol_value().
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-8-bigeasy@linutronix.de Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
This commit is contained in:
committed by
Petr Pavlu
parent
febaa65c94
commit
f27d8ed6a6
@@ -407,7 +407,7 @@ int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
|
||||
static unsigned long __find_kallsyms_symbol_value(struct module *mod, const char *name)
|
||||
{
|
||||
unsigned int i;
|
||||
struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms);
|
||||
struct mod_kallsyms *kallsyms = rcu_dereference(mod->kallsyms);
|
||||
|
||||
for (i = 0; i < kallsyms->num_symtab; i++) {
|
||||
const Elf_Sym *sym = &kallsyms->symtab[i];
|
||||
@@ -447,24 +447,15 @@ static unsigned long __module_kallsyms_lookup_name(const char *name)
|
||||
/* Look for this name: can be of form module:name. */
|
||||
unsigned long module_kallsyms_lookup_name(const char *name)
|
||||
{
|
||||
unsigned long ret;
|
||||
|
||||
/* Don't lock: we're in enough trouble already. */
|
||||
guard(rcu)();
|
||||
preempt_disable();
|
||||
ret = __module_kallsyms_lookup_name(name);
|
||||
preempt_enable();
|
||||
return ret;
|
||||
return __module_kallsyms_lookup_name(name);
|
||||
}
|
||||
|
||||
unsigned long find_kallsyms_symbol_value(struct module *mod, const char *name)
|
||||
{
|
||||
unsigned long ret;
|
||||
|
||||
preempt_disable();
|
||||
ret = __find_kallsyms_symbol_value(mod, name);
|
||||
preempt_enable();
|
||||
return ret;
|
||||
guard(rcu)();
|
||||
return __find_kallsyms_symbol_value(mod, name);
|
||||
}
|
||||
|
||||
int module_kallsyms_on_each_symbol(const char *modname,
|
||||
|
||||
Reference in New Issue
Block a user