This is a note to let you know that I've just added the patch titled s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36 to the 5.15-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch and it can be found in the queue-5.15 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From stable-owner@xxxxxxxxxxxxxxx Thu Mar 2 03:04:32 2023 From: Tom Saeger <tom.saeger@xxxxxxxxxx> Date: Wed, 1 Mar 2023 19:03:51 -0700 Subject: s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36 To: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Sasha Levin <sashal@xxxxxxxxxx>, Tom Saeger <tom.saeger@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, Masahiro Yamada <masahiroy@xxxxxxxxxx>, Nathan Chancellor <nathan@xxxxxxxxxx>, Heiko Carstens <hca@xxxxxxxxxxxxx> Message-ID: <20230210-tsaeger-upstream-linux-stable-5-15-v3-4-3431a425f0c7@xxxxxxxxxx> From: Masahiro Yamada <masahiroy@xxxxxxxxxx> commit a494398bde273143c2352dd373cad8211f7d94b2 upstream. Nathan Chancellor reports that the s390 vmlinux fails to link with GNU ld < 2.36 since commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv"). It happens for defconfig, or more specifically for CONFIG_EXPOLINE=y. $ s390x-linux-gnu-ld --version | head -n1 GNU ld (GNU Binutils for Debian) 2.35.2 $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- allnoconfig $ ./scripts/config -e CONFIG_EXPOLINE $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- olddefconfig $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- `.exit.text' referenced in section `.s390_return_reg' of drivers/base/dd.o: defined in discarded section `.exit.text' of drivers/base/dd.o make[1]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 make: *** [Makefile:1252: vmlinux] Error 2 arch/s390/kernel/vmlinux.lds.S wants to keep EXIT_TEXT: .exit.text : { EXIT_TEXT } But, at the same time, EXIT_TEXT is thrown away by DISCARD because s390 does not define RUNTIME_DISCARD_EXIT. I still do not understand why the latter wins after 99cb0d917ffa, but defining RUNTIME_DISCARD_EXIT seems correct because the comment line in arch/s390/kernel/vmlinux.lds.S says: /* * .exit.text is discarded at runtime, not link time, * to deal with references from __bug_table */ Nathan also found that binutils commit 21401fc7bf67 ("Duplicate output sections in scripts") cured this issue, so we cannot reproduce it with binutils 2.36+, but it is better to not rely on it. Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv") Link: https://lore.kernel.org/all/Y7Jal56f6UBh1abE@dev-arch.thelio-3990X/ Reported-by: Nathan Chancellor <nathan@xxxxxxxxxx> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> Link: https://lore.kernel.org/r/20230105031306.1455409-1-masahiroy@xxxxxxxxxx Signed-off-by: Heiko Carstens <hca@xxxxxxxxxxxxx> Signed-off-by: Tom Saeger <tom.saeger@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/s390/kernel/vmlinux.lds.S | 2 ++ 1 file changed, 2 insertions(+) --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S @@ -17,6 +17,8 @@ /* Handle ro_after_init data on our own. */ #define RO_AFTER_INIT_DATA +#define RUNTIME_DISCARD_EXIT + #define EMITS_PT_NOTE #include <asm-generic/vmlinux.lds.h> Patches currently in stable-queue which might be from stable-owner@xxxxxxxxxxxxxxx are queue-5.15/sched-fair-detect-capacity-inversion.patch queue-5.15/powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch queue-5.15/sched-uclamp-make-cpu_overutilized-use-util_fits_cpu.patch queue-5.15/s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch queue-5.15/powerpc-vmlinux.lds-define-runtime_discard_exit.patch queue-5.15/sched-uclamp-fix-fits_capacity-check-in-feec.patch queue-5.15/sched-fair-consider-capacity-inversion-in-util_fits_cpu.patch queue-5.15/sched-fair-fixes-for-capacity-inversion-detection.patch queue-5.15/sched-uclamp-fix-a-uninitialized-variable-warnings.patch queue-5.15/arch-fix-broken-buildid-for-arm64-and-riscv.patch queue-5.15/sched-uclamp-cater-for-uclamp-in-find_energy_efficient_cpu-s-early-exit-condition.patch