modpost: add sym_find_with_module() helper
find_symbol() returns the first symbol found in the hash table. This table is global, so it may return a symbol from an unexpected module. There is a case where we want to search for a symbol with a given name in a specified module. Add sym_find_with_module(), which receives the module pointer as the second argument. It is equivalent to find_module() if NULL is passed as the module pointer. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> Tested-by: Nathan Chancellor <nathan@kernel.org> Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM-14 (x86-64)
This commit is contained in:
parent
2a66c3124a
commit
69c4cc99bb
@ -266,7 +266,7 @@ static void sym_add_unresolved(const char *name, struct module *mod, bool weak)
|
||||
list_add_tail(&sym->list, &mod->unresolved_symbols);
|
||||
}
|
||||
|
||||
static struct symbol *find_symbol(const char *name)
|
||||
static struct symbol *sym_find_with_module(const char *name, struct module *mod)
|
||||
{
|
||||
struct symbol *s;
|
||||
|
||||
@ -275,12 +275,17 @@ static struct symbol *find_symbol(const char *name)
|
||||
name++;
|
||||
|
||||
for (s = symbolhash[tdb_hash(name) % SYMBOL_HASH_SIZE]; s; s = s->next) {
|
||||
if (strcmp(s->name, name) == 0)
|
||||
if (strcmp(s->name, name) == 0 && (!mod || s->module == mod))
|
||||
return s;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static struct symbol *find_symbol(const char *name)
|
||||
{
|
||||
return sym_find_with_module(name, NULL);
|
||||
}
|
||||
|
||||
struct namespace_list {
|
||||
struct list_head list;
|
||||
char namespace[];
|
||||
|
Loading…
Reference in New Issue
Block a user