modpost: remove is_shndx_special() check from section_rel(a)
authorMasahiro Yamada <masahiroy@kernel.org>
Sun, 21 May 2023 16:04:13 +0000 (01:04 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sun, 28 May 2023 11:35:16 +0000 (20:35 +0900)
This check is unneeded. Without it, sec_name() will returns the null
string "", then section_mismatch() will return immediately.

Anyway, special section indices rarely appear in these loops.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
scripts/mod/modpost.c
scripts/mod/modpost.h

index c339d9e..1018cd9 100644 (file)
@@ -1372,7 +1372,6 @@ static int addend_mips_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 static void section_rela(const char *modname, struct elf_info *elf,
                         Elf_Shdr *sechdr)
 {
-       Elf_Sym  *sym;
        Elf_Rela *rela;
        Elf_Rela r;
        unsigned int r_sym;
@@ -1415,11 +1414,8 @@ static void section_rela(const char *modname, struct elf_info *elf,
                                continue;
                        break;
                }
-               sym = elf->symtab_start + r_sym;
-               /* Skip special sections */
-               if (is_shndx_special(sym->st_shndx))
-                       continue;
-               check_section_mismatch(modname, elf, sym,
+
+               check_section_mismatch(modname, elf, elf->symtab_start + r_sym,
                                       fsecndx, fromsec, r.r_offset, r.r_addend);
        }
 }
@@ -1427,7 +1423,6 @@ static void section_rela(const char *modname, struct elf_info *elf,
 static void section_rel(const char *modname, struct elf_info *elf,
                        Elf_Shdr *sechdr)
 {
-       Elf_Sym *sym;
        Elf_Rel *rel;
        Elf_Rela r;
        unsigned int r_sym;
@@ -1474,11 +1469,8 @@ static void section_rel(const char *modname, struct elf_info *elf,
                default:
                        fatal("Please add code to calculate addend for this architecture\n");
                }
-               sym = elf->symtab_start + r_sym;
-               /* Skip special sections */
-               if (is_shndx_special(sym->st_shndx))
-                       continue;
-               check_section_mismatch(modname, elf, sym,
+
+               check_section_mismatch(modname, elf, elf->symtab_start + r_sym,
                                       fsecndx, fromsec, r.r_offset, r.r_addend);
        }
 }
index 1178f40..b1e2d95 100644 (file)
@@ -151,11 +151,6 @@ struct elf_info {
        Elf32_Word   *symtab_shndx_stop;
 };
 
-static inline int is_shndx_special(unsigned int i)
-{
-       return i != SHN_XINDEX && i >= SHN_LORESERVE && i <= SHN_HIRESERVE;
-}
-
 /* Accessor for sym->st_shndx, hides ugliness of "64k sections" */
 static inline unsigned int get_secindex(const struct elf_info *info,
                                        const Elf_Sym *sym)