--- /dev/null
+From 4afc71bba8b7d7841681e7647ae02f5079aaf28f Mon Sep 17 00:00:00 2001
+From: Joe Lawrence <joe.lawrence@redhat.com>
+Date: Wed, 4 Mar 2026 20:52:37 -0500
+Subject: module.lds,codetag: force 0 sh_addr for sections
+
+From: Joe Lawrence <joe.lawrence@redhat.com>
+
+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 <joe.lawrence@redhat.com>
+Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
+Acked-by: Josh Poimboeuf <jpoimboe@kernel.org>
+Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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*)
+ }
--- /dev/null
+From 1221365f55281349da4f4ba41c05b57cd15f5c28 Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Tue, 7 Apr 2026 22:07:22 +0200
+Subject: module.lds.S: Fix modules on 32-bit parisc architecture
+
+From: Helge Deller <deller@gmx.de>
+
+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 <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>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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_]*)
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