Commit 69c4cc99 authored by Masahiro Yamada's avatar Masahiro Yamada

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: default avatarMasahiro Yamada <masahiroy@kernel.org>
Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM-14 (x86-64)
parent 2a66c312
...@@ -266,7 +266,7 @@ static void sym_add_unresolved(const char *name, struct module *mod, bool weak) ...@@ -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); 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; struct symbol *s;
...@@ -275,12 +275,17 @@ static struct symbol *find_symbol(const char *name) ...@@ -275,12 +275,17 @@ static struct symbol *find_symbol(const char *name)
name++; name++;
for (s = symbolhash[tdb_hash(name) % SYMBOL_HASH_SIZE]; s; s = s->next) { 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 s;
} }
return NULL; return NULL;
} }
static struct symbol *find_symbol(const char *name)
{
return sym_find_with_module(name, NULL);
}
struct namespace_list { struct namespace_list {
struct list_head list; struct list_head list;
char namespace[]; char namespace[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment