modpost: move unresolved symbol checks to check_exports()
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Fri, 23 Nov 2018 07:57:23 +0000 (16:57 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sat, 1 Dec 2018 13:21:59 +0000 (22:21 +0900)
This will fit better in check_exports() than add_versions().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
scripts/mod/modpost.c

index 963a0b69b9a3ec170e47fcb7ac62c33a2d4c985a..0de2fb2366402a13c7f42e02c6f3912d180585d3 100644 (file)
@@ -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);