diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-11-23 16:57:23 +0900 |
---|---|---|
committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2018-12-01 22:21:59 +0900 |
commit | 3b4152880348287b6b3d9a0708f1e2f4c540f3d0 (patch) | |
tree | 446f12fda5eee1da89795e7c821d5d34851da5ca /scripts/mod/modpost.c | |
parent | c6826ad8a49f1230dcbc45dac26b54d492b13280 (diff) | |
download | lwn-3b4152880348287b6b3d9a0708f1e2f4c540f3d0.tar.gz lwn-3b4152880348287b6b3d9a0708f1e2f4c540f3d0.zip |
modpost: move unresolved symbol checks to check_exports()
This will fit better in check_exports() than add_versions().
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r-- | scripts/mod/modpost.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 963a0b69b9a3..0de2fb236640 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2097,15 +2097,27 @@ static void check_for_unused(enum export exp, const char *m, const char *s) } } -static void check_exports(struct module *mod) +static int check_exports(struct module *mod) { struct symbol *s, *exp; + int err = 0; for (s = mod->unres; s; s = s->next) { const char *basename; exp = find_symbol(s->name); - if (!exp || exp->module == mod) + if (!exp || exp->module == mod) { + if (have_vmlinux && !s->weak) { + if (warn_unresolved) { + warn("\"%s\" [%s.ko] undefined!\n", + s->name, mod->name); + } else { + merror("\"%s\" [%s.ko] undefined!\n", + s->name, mod->name); + err = 1; + } + } continue; + } basename = strrchr(mod->name, '/'); if (basename) basename++; @@ -2115,6 +2127,8 @@ static void check_exports(struct module *mod) check_for_gpl_usage(exp->export, basename, exp->name); check_for_unused(exp->export, basename, exp->name); } + + return err; } static int check_modname_len(struct module *mod) @@ -2192,19 +2206,8 @@ static int add_versions(struct buffer *b, struct module *mod) for (s = mod->unres; s; s = s->next) { exp = find_symbol(s->name); - if (!exp || exp->module == mod) { - if (have_vmlinux && !s->weak) { - if (warn_unresolved) { - warn("\"%s\" [%s.ko] undefined!\n", - s->name, mod->name); - } else { - merror("\"%s\" [%s.ko] undefined!\n", - s->name, mod->name); - err = 1; - } - } + if (!exp || exp->module == mod) continue; - } s->module = exp->module; s->crc_valid = exp->crc_valid; s->crc = exp->crc; @@ -2507,7 +2510,7 @@ int main(int argc, char **argv) buf.pos = 0; err |= check_modname_len(mod); - check_exports(mod); + err |= check_exports(mod); add_header(&buf, mod); add_intree_flag(&buf, !external_module); add_retpoline(&buf); |