]> www.infradead.org Git - users/hch/misc.git/commitdiff
x86/boot: Revert "Reject absolute references in .head.text"
authorArd Biesheuvel <ardb@kernel.org>
Thu, 28 Aug 2025 10:22:20 +0000 (12:22 +0200)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 3 Sep 2025 15:59:56 +0000 (17:59 +0200)
This reverts commit

  faf0ed487415 ("x86/boot: Reject absolute references in .head.text")

The startup code is checked directly for the absence of absolute symbol
references, so checking the .head.text section in the relocs tool is no
longer needed.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/20250828102202.1849035-41-ardb+git@google.com
arch/x86/tools/relocs.c

index 5778bc4984153f188cc70a08623a57f9cf12883a..e5a2b9a912d1986bae76ac607eeb593fc5468407 100644 (file)
@@ -740,10 +740,10 @@ static void walk_relocs(int (*process)(struct section *sec, Elf_Rel *rel,
 static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym,
                      const char *symname)
 {
-       int headtext = !strcmp(sec_name(sec->shdr.sh_info), ".head.text");
        unsigned r_type = ELF64_R_TYPE(rel->r_info);
        ElfW(Addr) offset = rel->r_offset;
        int shn_abs = (sym->st_shndx == SHN_ABS) && !is_reloc(S_REL, symname);
+
        if (sym->st_shndx == SHN_UNDEF)
                return 0;
 
@@ -783,12 +783,6 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym,
                        break;
                }
 
-               if (headtext) {
-                       die("Absolute reference to symbol '%s' not permitted in .head.text\n",
-                           symname);
-                       break;
-               }
-
                /*
                 * Relocation offsets for 64 bit kernels are output
                 * as 32 bits and sign extended back to 64 bits when