]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/vmlinux.lds.S: Prevent thunk functions from getting placed with normal text
authorJosh Poimboeuf <jpoimboe@kernel.org>
Wed, 17 Sep 2025 16:03:09 +0000 (09:03 -0700)
committerJosh Poimboeuf <jpoimboe@kernel.org>
Tue, 14 Oct 2025 21:45:21 +0000 (14:45 -0700)
The s390 indirect thunks are placed in the .text.__s390_indirect_jump_*
sections.

Certain config options which enable -ffunction-sections have a custom
version of the TEXT_TEXT macro:

  .text.[0-9a-zA-Z_]*

That unintentionally matches the thunk sections, causing them to get
grouped with normal text rather than being handled by their intended
rule later in the script:

  *(.text.*_indirect_*)

Fix that by adding another period to the thunk section names, following
the kernel's general convention for distinguishing code-generated text
sections from compiler-generated ones.

Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Acked-by: Petr Mladek <pmladek@suse.com>
Tested-by: Joe Lawrence <joe.lawrence@redhat.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
arch/s390/include/asm/nospec-insn.h
arch/s390/kernel/vmlinux.lds.S

index 6ce6b56e282b8510e5732af9b108f88e8c038aff..46f92bb4c9e50281e3da705a63362f9d2d2494cc 100644 (file)
@@ -19,7 +19,7 @@
 #ifdef CONFIG_EXPOLINE_EXTERN
        SYM_CODE_START(\name)
 #else
-       .pushsection .text.\name,"axG",@progbits,\name,comdat
+       .pushsection .text..\name,"axG",@progbits,\name,comdat
        .globl \name
        .hidden \name
        .type \name,@function
index d74d4c52ccd05a255b5642359049c2990a082bbf..8609126961dcee7d9163879749ce769ffcd58cb8 100644 (file)
@@ -51,7 +51,7 @@ SECTIONS
                IRQENTRY_TEXT
                SOFTIRQENTRY_TEXT
                FTRACE_HOTPATCH_TRAMPOLINES_TEXT
-               *(.text.*_indirect_*)
+               *(.text..*_indirect_*)
                *(.gnu.warning)
                . = ALIGN(PAGE_SIZE);
                _etext = .;             /* End of text section */