From: Greg Kroah-Hartman Date: Sun, 22 Jan 2023 14:41:56 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.14.304~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cd142451fe098e4376bd761e138a1aa06efd2f20;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: powerpc-vmlinux.lds-define-runtime_discard_exit.patch powerpc-vmlinux.lds-don-t-discard-.comment.patch powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch --- diff --git a/queue-5.4/powerpc-vmlinux.lds-define-runtime_discard_exit.patch b/queue-5.4/powerpc-vmlinux.lds-define-runtime_discard_exit.patch new file mode 100644 index 00000000000..f8c64f8a6c5 --- /dev/null +++ b/queue-5.4/powerpc-vmlinux.lds-define-runtime_discard_exit.patch @@ -0,0 +1,54 @@ +From 4b9880dbf3bdba3a7c56445137c3d0e30aaa0a40 Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Thu, 5 Jan 2023 22:05:04 +1100 +Subject: powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT + +From: Michael Ellerman + +commit 4b9880dbf3bdba3a7c56445137c3d0e30aaa0a40 upstream. + +The powerpc linker script explicitly includes .exit.text, because +otherwise the link fails due to references from __bug_table and +__ex_table. The code is freed (discarded) at runtime along with +.init.text and data. + +That has worked in the past despite powerpc not defining +RUNTIME_DISCARD_EXIT because DISCARDS appears late in the powerpc linker +script (line 410), and the explicit inclusion of .exit.text +earlier (line 280) supersedes the discard. + +However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and +riscv") introduced an earlier use of DISCARD as part of the RO_DATA +macro (line 136). With binutils < 2.36 that causes the DISCARD +directives later in the script to be applied earlier [1], causing +.exit.text to actually be discarded at link time, leading to build +errors: + + '.exit.text' referenced in section '__bug_table' of crypto/algboss.o: defined in + discarded section '.exit.text' of crypto/algboss.o + '.exit.text' referenced in section '__ex_table' of drivers/nvdimm/core.o: defined in + discarded section '.exit.text' of drivers/nvdimm/core.o + +Fix it by defining RUNTIME_DISCARD_EXIT, which causes the generic +DISCARDS macro to not include .exit.text at all. + +1: https://lore.kernel.org/lkml/87fscp2v7k.fsf@igel.home/ + +Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv") +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20230105132349.384666-1-mpe@ellerman.id.au +Signed-off-by: Greg Kroah-Hartman +--- + arch/powerpc/kernel/vmlinux.lds.S | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/powerpc/kernel/vmlinux.lds.S ++++ b/arch/powerpc/kernel/vmlinux.lds.S +@@ -6,6 +6,7 @@ + #endif + + #define BSS_FIRST_SECTIONS *(.bss.prominit) ++#define RUNTIME_DISCARD_EXIT + + #include + #include diff --git a/queue-5.4/powerpc-vmlinux.lds-don-t-discard-.comment.patch b/queue-5.4/powerpc-vmlinux.lds-don-t-discard-.comment.patch new file mode 100644 index 00000000000..5f9c1ba1331 --- /dev/null +++ b/queue-5.4/powerpc-vmlinux.lds-don-t-discard-.comment.patch @@ -0,0 +1,43 @@ +From be5f95c8779e19779dd81927c8574fec5aaba36c Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Thu, 5 Jan 2023 22:42:59 +1100 +Subject: powerpc/vmlinux.lds: Don't discard .comment + +From: Michael Ellerman + +commit be5f95c8779e19779dd81927c8574fec5aaba36c upstream. + +Although the powerpc linker script mentions .comment in the DISCARD +section, that has never actually caused it to be discarded, because the +earlier ELF_DETAILS macro (previously STABS_DEBUG) explicitly includes +.comment. + +However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and +riscv") introduced an earlier use of DISCARD as part of the RO_DATA +macro. With binutils < 2.36 that causes the DISCARD directives later in +the script to be applied earlier, causing .comment to actually be +discarded. + +It's confusing to explicitly include and discard .comment, and even more +so if the behaviour depends on the toolchain version. So don't discard +.comment in order to maintain the existing behaviour in all cases. + +Fixes: 83a092cf95f2 ("powerpc: Link warning for orphan sections") +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20230105132349.384666-3-mpe@ellerman.id.au +Signed-off-by: Greg Kroah-Hartman +--- + arch/powerpc/kernel/vmlinux.lds.S | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/kernel/vmlinux.lds.S ++++ b/arch/powerpc/kernel/vmlinux.lds.S +@@ -395,7 +395,7 @@ SECTIONS + DISCARDS + /DISCARD/ : { + *(*.EMB.apuinfo) +- *(.glink .iplt .plt .comment) ++ *(.glink .iplt .plt) + *(.gnu.version*) + *(.gnu.attributes) + *(.eh_frame) diff --git a/queue-5.4/powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch b/queue-5.4/powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch new file mode 100644 index 00000000000..637621cdd4d --- /dev/null +++ b/queue-5.4/powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch @@ -0,0 +1,53 @@ +From 07b050f9290ee012a407a0f64151db902a1520f5 Mon Sep 17 00:00:00 2001 +From: Michael Ellerman +Date: Thu, 5 Jan 2023 22:28:36 +1100 +Subject: powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds + +From: Michael Ellerman + +commit 07b050f9290ee012a407a0f64151db902a1520f5 upstream. + +Relocatable kernels must not discard relocations, they need to be +processed at runtime. As such they are included for CONFIG_RELOCATABLE +builds in the powerpc linker script (line 340). + +However they are also unconditionally discarded later in the +script (line 414). Previously that worked because the earlier inclusion +superseded the discard. + +However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and +riscv") introduced an earlier use of DISCARD as part of the RO_DATA +macro (line 137). With binutils < 2.36 that causes the DISCARD +directives later in the script to be applied earlier, causing .rela* to +actually be discarded at link time, leading to build warnings and a +kernel that doesn't boot: + + ld: warning: discarding dynamic section .rela.init.rodata + +Fix it by conditionally discarding .rela* only when CONFIG_RELOCATABLE +is disabled. + +Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv") +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20230105132349.384666-2-mpe@ellerman.id.au +Signed-off-by: Greg Kroah-Hartman +--- + arch/powerpc/kernel/vmlinux.lds.S | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/arch/powerpc/kernel/vmlinux.lds.S ++++ b/arch/powerpc/kernel/vmlinux.lds.S +@@ -395,9 +395,12 @@ SECTIONS + DISCARDS + /DISCARD/ : { + *(*.EMB.apuinfo) +- *(.glink .iplt .plt .rela* .comment) ++ *(.glink .iplt .plt .comment) + *(.gnu.version*) + *(.gnu.attributes) + *(.eh_frame) ++#ifndef CONFIG_RELOCATABLE ++ *(.rela*) ++#endif + } + } diff --git a/queue-5.4/s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch b/queue-5.4/s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch new file mode 100644 index 00000000000..a2dbae8b341 --- /dev/null +++ b/queue-5.4/s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch @@ -0,0 +1,69 @@ +From a494398bde273143c2352dd373cad8211f7d94b2 Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Thu, 5 Jan 2023 12:13:06 +0900 +Subject: s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36 + +From: Masahiro Yamada + +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 +Signed-off-by: Masahiro Yamada +Link: https://lore.kernel.org/r/20230105031306.1455409-1-masahiroy@kernel.org +Signed-off-by: Heiko Carstens +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -15,6 +15,8 @@ + /* Handle ro_after_init data on our own. */ + #define RO_AFTER_INIT_DATA + ++#define RUNTIME_DISCARD_EXIT ++ + #include + #include + diff --git a/queue-5.4/series b/queue-5.4/series index 0589903fb13..766e308dfb6 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -49,3 +49,7 @@ drm-amd-display-fix-set-scaling-doesn-s-work.patch drm-amd-display-fix-color_space_ycbcr2020_type-matrix.patch x86-fpu-use-_alignof-to-avoid-undefined-behavior-in-type_align.patch arch-fix-broken-buildid-for-arm64-and-riscv.patch +s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch +powerpc-vmlinux.lds-define-runtime_discard_exit.patch +powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch +powerpc-vmlinux.lds-don-t-discard-.comment.patch