Loading scripts/mod/modpost.c +20 −35 Original line number Diff line number Diff line Loading @@ -1207,17 +1207,27 @@ static Elf_Sym *find_elf_symbol2(struct elf_info *elf, Elf_Addr addr, return near; } /* * Print a warning about a section mismatch. * Try to find symbols near it so user can find it. * Check whitelist before warning - it may be a false positive. */ static void report_sec_mismatch(const char *modname, const struct sectioncheck *mismatch, const char *fromsec, const char *fromsym, const char *tosec, const char *tosym) static void default_mismatch_handler(const char *modname, struct elf_info *elf, const struct sectioncheck* const mismatch, Elf_Rela *r, Elf_Sym *sym, const char *fromsec) { const char *tosec; Elf_Sym *to; Elf_Sym *from; const char *tosym; const char *fromsym; from = find_elf_symbol2(elf, r->r_offset, fromsec); fromsym = sym_name(elf, from); 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)) return; sec_mismatch_count++; switch (mismatch->mismatch) { Loading @@ -1242,31 +1252,6 @@ static void report_sec_mismatch(const char *modname, } } static void default_mismatch_handler(const char *modname, struct elf_info *elf, const struct sectioncheck* const mismatch, Elf_Rela *r, Elf_Sym *sym, const char *fromsec) { const char *tosec; Elf_Sym *to; Elf_Sym *from; const char *tosym; const char *fromsym; from = find_elf_symbol2(elf, r->r_offset, fromsec); fromsym = sym_name(elf, from); 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)) { report_sec_mismatch(modname, mismatch, fromsec, fromsym, tosec, tosym); } } static int is_executable_section(struct elf_info* elf, unsigned int section_index) { if (section_index > elf->num_sections) Loading Loading
scripts/mod/modpost.c +20 −35 Original line number Diff line number Diff line Loading @@ -1207,17 +1207,27 @@ static Elf_Sym *find_elf_symbol2(struct elf_info *elf, Elf_Addr addr, return near; } /* * Print a warning about a section mismatch. * Try to find symbols near it so user can find it. * Check whitelist before warning - it may be a false positive. */ static void report_sec_mismatch(const char *modname, const struct sectioncheck *mismatch, const char *fromsec, const char *fromsym, const char *tosec, const char *tosym) static void default_mismatch_handler(const char *modname, struct elf_info *elf, const struct sectioncheck* const mismatch, Elf_Rela *r, Elf_Sym *sym, const char *fromsec) { const char *tosec; Elf_Sym *to; Elf_Sym *from; const char *tosym; const char *fromsym; from = find_elf_symbol2(elf, r->r_offset, fromsec); fromsym = sym_name(elf, from); 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)) return; sec_mismatch_count++; switch (mismatch->mismatch) { Loading @@ -1242,31 +1252,6 @@ static void report_sec_mismatch(const char *modname, } } static void default_mismatch_handler(const char *modname, struct elf_info *elf, const struct sectioncheck* const mismatch, Elf_Rela *r, Elf_Sym *sym, const char *fromsec) { const char *tosec; Elf_Sym *to; Elf_Sym *from; const char *tosym; const char *fromsym; from = find_elf_symbol2(elf, r->r_offset, fromsec); fromsym = sym_name(elf, from); 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)) { report_sec_mismatch(modname, mismatch, fromsec, fromsym, tosec, tosym); } } static int is_executable_section(struct elf_info* elf, unsigned int section_index) { if (section_index > elf->num_sections) Loading