modpost: mismatch_handler: retrieve tosym information only when needed.
authorQuentin Casasnovas <quentin.casasnovas@oracle.com>
Mon, 13 Apr 2015 11:13:45 +0000 (20:43 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 13 Apr 2015 11:33:01 +0000 (21:03 +0930)
Signed-off-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
scripts/mod/modpost.c

index c69681e815b24b90b4fd75850844d146c42cc61b..bf0cf8173bebfbddccf4e359b72245e638c5989a 100644 (file)
@@ -1432,16 +1432,17 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf,
        const char *tosym;
        const char *fromsym;
 
-       tosec = sec_name(elf, get_secindex(elf, sym));
        from = find_elf_symbol2(elf, r->r_offset, fromsec);
        fromsym = sym_name(elf, from);
-       to = find_elf_symbol(elf, r->r_addend, sym);
-       tosym = sym_name(elf, to);
 
        if (!strncmp(fromsym, "reference___initcall",
                     sizeof("reference___initcall")-1))
                return;
 
+       tosec = sec_name(elf, get_secindex(elf, sym));
+       to = find_elf_symbol(elf, r->r_addend, sym);
+       tosym = sym_name(elf, to);
+
        /* check whitelist - we may ignore it */
        if (secref_whitelist(mismatch,
                             fromsec, fromsym, tosec, tosym)) {