From: Greg Kroah-Hartman Date: Fri, 1 May 2026 11:47:40 +0000 (+0200) Subject: 7.0-stable patches X-Git-Tag: v6.12.86~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87900536da4105ac272903d144b56827c2d9717d;p=thirdparty%2Fkernel%2Fstable-queue.git 7.0-stable patches added patches: module.lds-codetag-force-0-sh_addr-for-sections.patch module.lds.s-fix-modules-on-32-bit-parisc-architecture.patch --- diff --git a/queue-7.0/module.lds-codetag-force-0-sh_addr-for-sections.patch b/queue-7.0/module.lds-codetag-force-0-sh_addr-for-sections.patch new file mode 100644 index 0000000000..73ca246363 --- /dev/null +++ b/queue-7.0/module.lds-codetag-force-0-sh_addr-for-sections.patch @@ -0,0 +1,85 @@ +From 4afc71bba8b7d7841681e7647ae02f5079aaf28f Mon Sep 17 00:00:00 2001 +From: Joe Lawrence +Date: Wed, 4 Mar 2026 20:52:37 -0500 +Subject: module.lds,codetag: force 0 sh_addr for sections + +From: Joe Lawrence + +commit 4afc71bba8b7d7841681e7647ae02f5079aaf28f upstream. + +Commit 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and +related macros") added .text and made .data, .bss, and .rodata sections +unconditional in the module linker script, but without an explicit +address like the other sections in the same file. + +When linking modules with ld.bfd -r, sections defined without an address +inherit the location counter, resulting in non-zero sh_addr values in +the .ko. Relocatable objects are expected to have sh_addr=0 for these +sections and these non-zero addresses confuse elfutils and have been +reported to cause segmentation faults in SystemTap [1]. + +Add the 0 address specifier to all sections in module.lds, including the +.codetag.* sections via MOD_SEPARATE_CODETAG_SECTIONS macro. + +Link: https://sourceware.org/bugzilla/show_bug.cgi?id=33958 +Fixes: 1ba9f8979426 ("vmlinux.lds: Unify TEXT_MAIN, DATA_MAIN, and related macros") +Signed-off-by: Joe Lawrence +Reviewed-by: Petr Pavlu +Acked-by: Josh Poimboeuf +Signed-off-by: Sami Tolvanen +Signed-off-by: Greg Kroah-Hartman +--- + include/asm-generic/codetag.lds.h | 2 +- + scripts/module.lds.S | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +--- a/include/asm-generic/codetag.lds.h ++++ b/include/asm-generic/codetag.lds.h +@@ -18,7 +18,7 @@ + IF_MEM_ALLOC_PROFILING(SECTION_WITH_BOUNDARIES(alloc_tags)) + + #define MOD_SEPARATE_CODETAG_SECTION(_name) \ +- .codetag.##_name : { \ ++ .codetag.##_name 0 : { \ + SECTION_WITH_BOUNDARIES(_name) \ + } + +--- a/scripts/module.lds.S ++++ b/scripts/module.lds.S +@@ -32,30 +32,30 @@ SECTIONS { + __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) } + __ex_table 0 : ALIGN(4) { KEEP(*(__ex_table)) } + +- __patchable_function_entries : { *(__patchable_function_entries) } ++ __patchable_function_entries 0 : { *(__patchable_function_entries) } + + .init.klp_funcs 0 : ALIGN(8) { KEEP(*(.init.klp_funcs)) } + .init.klp_objects 0 : ALIGN(8) { KEEP(*(.init.klp_objects)) } + + #ifdef CONFIG_ARCH_USES_CFI_TRAPS +- __kcfi_traps : { KEEP(*(.kcfi_traps)) } ++ __kcfi_traps 0 : { KEEP(*(.kcfi_traps)) } + #endif + +- .text : { ++ .text 0 : { + *(.text .text.[0-9a-zA-Z_]*) + } + +- .bss : { ++ .bss 0 : { + *(.bss .bss.[0-9a-zA-Z_]*) + *(.bss..L*) + } + +- .data : { ++ .data 0 : { + *(.data .data.[0-9a-zA-Z_]*) + *(.data..L*) + } + +- .rodata : { ++ .rodata 0 : { + *(.rodata .rodata.[0-9a-zA-Z_]*) + *(.rodata..L*) + } diff --git a/queue-7.0/module.lds.s-fix-modules-on-32-bit-parisc-architecture.patch b/queue-7.0/module.lds.s-fix-modules-on-32-bit-parisc-architecture.patch new file mode 100644 index 0000000000..ba7eab14a6 --- /dev/null +++ b/queue-7.0/module.lds.s-fix-modules-on-32-bit-parisc-architecture.patch @@ -0,0 +1,76 @@ +From 1221365f55281349da4f4ba41c05b57cd15f5c28 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Tue, 7 Apr 2026 22:07:22 +0200 +Subject: module.lds.S: Fix modules on 32-bit parisc architecture + +From: Helge Deller + +commit 1221365f55281349da4f4ba41c05b57cd15f5c28 upstream. + +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 +Cc: stable@vger.kernel.org # v6.19+ +Suggested-by: Sami Tolvanen +Reviewed-by: Petr Pavlu +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman +--- + arch/Kconfig | 7 +++++++ + arch/parisc/Kconfig | 1 + + scripts/module.lds.S | 2 ++ + 3 files changed, 10 insertions(+) + +--- a/arch/Kconfig ++++ b/arch/Kconfig +@@ -1128,6 +1128,13 @@ config ARCH_WANTS_MODULES_DATA_IN_VMALLO + 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 +--- a/arch/parisc/Kconfig ++++ b/arch/parisc/Kconfig +@@ -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 +--- a/scripts/module.lds.S ++++ b/scripts/module.lds.S +@@ -41,9 +41,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_]*) diff --git a/queue-7.0/series b/queue-7.0/series index bbf6748899..008f9305af 100644 --- a/queue-7.0/series +++ b/queue-7.0/series @@ -113,3 +113,5 @@ io_uring-register-fix-ring-resizing-with-mixed-large-sqes-cqes.patch io_uring-zcrx-fix-user_struct-uaf.patch io_uring-poll-fix-signed-comparison-in-io_poll_get_ownership.patch io_uring-poll-ensure-epoll_oneshot-is-propagated-for-epoll_uring_wake.patch +module.lds-codetag-force-0-sh_addr-for-sections.patch +module.lds.s-fix-modules-on-32-bit-parisc-architecture.patch