]> git.itanic.dy.fi Git - linux-stable/commitdiff
modpost: remove unreachable code after fatal()
authorMasahiro Yamada <masahiroy@kernel.org>
Sun, 3 Dec 2023 09:49:34 +0000 (18:49 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sun, 10 Dec 2023 06:34:37 +0000 (15:34 +0900)
Now compilers can recognize fatal() never returns.

While GCC 4.5 dropped support for -Wunreachable-code, Clang is capable
of detecting the unreachable code.

  $ make HOSTCC=clang HOSTCFLAGS=-Wunreachable-code-return
      [snip]
    HOSTCC  scripts/mod/modpost.o
  scripts/mod/modpost.c:520:11: warning: 'return' will never be executed [-Wunreachable-code-return]
                          return 0;
                                 ^
  scripts/mod/modpost.c:477:10: warning: 'return' will never be executed [-Wunreachable-code-return]
                  return 0;
                         ^
  2 warnings generated.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
scripts/mod/modpost.c

index 3233946fa5f6781a3afb5a462f2dac3b12d19750..e2bc180cecc81a16af9f587d15f5b23de381334b 100644 (file)
@@ -476,11 +476,9 @@ static int parse_elf(struct elf_info *info, const char *filename)
                fatal("%s: not relocatable object.", filename);
 
        /* Check if file offset is correct */
-       if (hdr->e_shoff > info->size) {
+       if (hdr->e_shoff > info->size)
                fatal("section header offset=%lu in file '%s' is bigger than filesize=%zu\n",
                      (unsigned long)hdr->e_shoff, filename, info->size);
-               return 0;
-       }
 
        if (hdr->e_shnum == SHN_UNDEF) {
                /*
@@ -518,12 +516,11 @@ static int parse_elf(struct elf_info *info, const char *filename)
                const char *secname;
                int nobits = sechdrs[i].sh_type == SHT_NOBITS;
 
-               if (!nobits && sechdrs[i].sh_offset > info->size) {
+               if (!nobits && sechdrs[i].sh_offset > info->size)
                        fatal("%s is truncated. sechdrs[i].sh_offset=%lu > sizeof(*hrd)=%zu\n",
                              filename, (unsigned long)sechdrs[i].sh_offset,
                              sizeof(*hdr));
-                       return 0;
-               }
+
                secname = secstrings + sechdrs[i].sh_name;
                if (strcmp(secname, ".modinfo") == 0) {
                        if (nobits)