Message ID | 20220610183236.1272216-7-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Unify <linux/export.h> and <asm/export.h>, remove EXPORT_DATA_SYMBOL() | expand |
On Fri, Jun 10, 2022 at 11:34 AM Masahiro Yamada <masahiroy@kernel.org> wrote: > > Pass a set of the name, license, and namespace to sym_add_exported(). > > sym_update_namespace() is unneeded. > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Thanks for the patch! Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> > --- > > scripts/mod/modpost.c | 41 +++++++++-------------------------------- > 1 file changed, 9 insertions(+), 32 deletions(-) > > diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c > index f738dddde7b8..0db2cbb74a2a 100644 > --- a/scripts/mod/modpost.c > +++ b/scripts/mod/modpost.c > @@ -357,26 +357,8 @@ static const char *sec_name_of_symbol(const struct elf_info *info, > > #define strstarts(str, prefix) (strncmp(str, prefix, strlen(prefix)) == 0) > > -static void sym_update_namespace(const char *symname, const char *namespace) > -{ > - struct symbol *s = find_symbol(symname); > - > - /* > - * That symbol should have been created earlier and thus this is > - * actually an assertion. > - */ > - if (!s) { > - error("Could not update namespace(%s) for symbol %s\n", > - namespace, symname); > - return; > - } > - > - free(s->namespace); > - s->namespace = namespace[0] ? NOFAIL(strdup(namespace)) : NULL; > -} > - > static struct symbol *sym_add_exported(const char *name, struct module *mod, > - bool gpl_only) > + bool gpl_only, const char *namespace) > { > struct symbol *s = find_symbol(name); > > @@ -389,6 +371,7 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod, > s = alloc_symbol(name); > s->module = mod; > s->is_gpl_only = gpl_only; > + s->namespace = namespace[0] ? NOFAIL(strdup(namespace)) : NULL; > list_add_tail(&s->list, &mod->exported_symbols); > hash_add_symbol(s); > > @@ -658,17 +641,12 @@ static void handle_symbol(struct module *mod, struct elf_info *info, > break; > default: > if (sym->st_shndx == info->export_symbol_sec) { > - const char *name; > - > - if (strstarts(symname, "__export_symbol_gpl.")) { > - name = symname + strlen("__export_symbol_gpl."); > - sym_add_exported(name, mod, true); > - sym_update_namespace(name, sym_get_data(info, sym)); > - } else if (strstarts(symname, "__export_symbol.")) { > - name = symname + strlen("__export_symbol."); > - sym_add_exported(name, mod, false); > - sym_update_namespace(name, sym_get_data(info, sym)); > - } > + if (strstarts(symname, "__export_symbol_gpl.")) > + sym_add_exported(symname + strlen("__export_symbol_gpl."), > + mod, true, sym_get_data(info, sym)); > + else if (strstarts(symname, "__export_symbol.")) > + sym_add_exported(symname + strlen("__export_symbol."), > + mod, false, sym_get_data(info, sym)); > > break; > } > @@ -2470,9 +2448,8 @@ static void read_dump(const char *fname) > mod = new_module(modname, strlen(modname)); > mod->from_dump = true; > } > - s = sym_add_exported(symname, mod, gpl_only); > + s = sym_add_exported(symname, mod, gpl_only, namespace); > sym_set_crc(s, crc); > - sym_update_namespace(symname, namespace); > } > free(buf); > return; > -- > 2.32.0 >
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index f738dddde7b8..0db2cbb74a2a 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -357,26 +357,8 @@ static const char *sec_name_of_symbol(const struct elf_info *info, #define strstarts(str, prefix) (strncmp(str, prefix, strlen(prefix)) == 0) -static void sym_update_namespace(const char *symname, const char *namespace) -{ - struct symbol *s = find_symbol(symname); - - /* - * That symbol should have been created earlier and thus this is - * actually an assertion. - */ - if (!s) { - error("Could not update namespace(%s) for symbol %s\n", - namespace, symname); - return; - } - - free(s->namespace); - s->namespace = namespace[0] ? NOFAIL(strdup(namespace)) : NULL; -} - static struct symbol *sym_add_exported(const char *name, struct module *mod, - bool gpl_only) + bool gpl_only, const char *namespace) { struct symbol *s = find_symbol(name); @@ -389,6 +371,7 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod, s = alloc_symbol(name); s->module = mod; s->is_gpl_only = gpl_only; + s->namespace = namespace[0] ? NOFAIL(strdup(namespace)) : NULL; list_add_tail(&s->list, &mod->exported_symbols); hash_add_symbol(s); @@ -658,17 +641,12 @@ static void handle_symbol(struct module *mod, struct elf_info *info, break; default: if (sym->st_shndx == info->export_symbol_sec) { - const char *name; - - if (strstarts(symname, "__export_symbol_gpl.")) { - name = symname + strlen("__export_symbol_gpl."); - sym_add_exported(name, mod, true); - sym_update_namespace(name, sym_get_data(info, sym)); - } else if (strstarts(symname, "__export_symbol.")) { - name = symname + strlen("__export_symbol."); - sym_add_exported(name, mod, false); - sym_update_namespace(name, sym_get_data(info, sym)); - } + if (strstarts(symname, "__export_symbol_gpl.")) + sym_add_exported(symname + strlen("__export_symbol_gpl."), + mod, true, sym_get_data(info, sym)); + else if (strstarts(symname, "__export_symbol.")) + sym_add_exported(symname + strlen("__export_symbol."), + mod, false, sym_get_data(info, sym)); break; } @@ -2470,9 +2448,8 @@ static void read_dump(const char *fname) mod = new_module(modname, strlen(modname)); mod->from_dump = true; } - s = sym_add_exported(symname, mod, gpl_only); + s = sym_add_exported(symname, mod, gpl_only, namespace); sym_set_crc(s, crc); - sym_update_namespace(symname, namespace); } free(buf); return;
Pass a set of the name, license, and namespace to sym_add_exported(). sym_update_namespace() is unneeded. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- scripts/mod/modpost.c | 41 +++++++++-------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-)