]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
module.lds.S: Fix modules on 32-bit parisc architecture
authorHelge Deller <deller@gmx.de>
Tue, 7 Apr 2026 20:07:22 +0000 (22:07 +0200)
committerHelge Deller <deller@gmx.de>
Fri, 17 Apr 2026 13:46:46 +0000 (15:46 +0200)
On the 32-bit parisc architecture, we always used the
-ffunction-sections compiler option to tell the compiler to put the
functions into seperate text sections. This is necessary, otherwise
"big" kernel modules like ext4 or ipv6 fail to load because some
branches won't be able to reach their stubs.

Commit 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related
macros") broke this for parisc because all text sections will get
unconditionally merged now.

Introduce the ARCH_WANTS_MODULES_TEXT_SECTIONS config option which
avoids the text section merge for modules, and fix this issue by
enabling this option by default for 32-bit parisc.

Fixes: 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros")
Cc: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: stable@vger.kernel.org # v6.19+
Suggested-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/Kconfig
arch/parisc/Kconfig
scripts/module.lds.S

index 334b69505381c0ec54847245a84a21868f926e97..4eb2e51e28f12a556353ae6e2914bdfd0dfd0b9f 100644 (file)
@@ -1127,6 +1127,13 @@ config ARCH_WANTS_MODULES_DATA_IN_VMALLOC
          For architectures like powerpc/32 which have constraints on module
          allocation and need to allocate module data outside of module area.
 
+config ARCH_WANTS_MODULES_TEXT_SECTIONS
+       bool
+       help
+         For architectures like 32-bit parisc which require that functions in
+         modules have to keep code in own text sections (-ffunction-sections)
+         and to avoid merging all text into one big text section,
+
 config ARCH_WANTS_EXECMEM_LATE
        bool
        help
index 3e929eb5a7fe615969ebde75b12f48ec3f5eacab..d3afac2f0d9be9ed99407373dd8281067465d890 100644 (file)
@@ -8,6 +8,7 @@ config PARISC
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_SYSCALL_TRACEPOINTS
        select ARCH_WANT_FRAME_POINTERS
+       select ARCH_WANTS_MODULES_TEXT_SECTIONS if !64BIT
        select ARCH_HAS_CPU_CACHE_ALIASING
        select ARCH_HAS_DMA_ALLOC if PA11
        select ARCH_HAS_DMA_OPS
index 2dc4c8c3e667ee9908a83da5326114601dc6211c..b62683061d79b062d6bdcb4d4919a55decc2da88 100644 (file)
@@ -40,9 +40,11 @@ SECTIONS {
        __kcfi_traps            0 : { KEEP(*(.kcfi_traps)) }
 #endif
 
+#ifndef CONFIG_ARCH_WANTS_MODULES_TEXT_SECTIONS
        .text                   0 : {
                *(.text .text.[0-9a-zA-Z_]*)
        }
+#endif
 
        .bss                    0 : {
                *(.bss .bss.[0-9a-zA-Z_]*)