From: Greg Kroah-Hartman Date: Fri, 11 Jan 2019 05:37:19 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.20.2~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e90c1c1eb684138b52db0b6ef7ebf14fec4c42cb;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: arm64-relocatable-fix-inconsistencies-in-linker-script-and-options.patch --- diff --git a/queue-4.19/arm64-relocatable-fix-inconsistencies-in-linker-script-and-options.patch b/queue-4.19/arm64-relocatable-fix-inconsistencies-in-linker-script-and-options.patch new file mode 100644 index 00000000000..b3dd365644d --- /dev/null +++ b/queue-4.19/arm64-relocatable-fix-inconsistencies-in-linker-script-and-options.patch @@ -0,0 +1,96 @@ +From 3bbd3db86470c701091fb1d67f1fab6621debf50 Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +Date: Mon, 3 Dec 2018 20:58:05 +0100 +Subject: arm64: relocatable: fix inconsistencies in linker script and options + +From: Ard Biesheuvel + +commit 3bbd3db86470c701091fb1d67f1fab6621debf50 upstream. + +readelf complains about the section layout of vmlinux when building +with CONFIG_RELOCATABLE=y (for KASLR): + + readelf: Warning: [21]: Link field (0) should index a symtab section. + readelf: Warning: [21]: Info field (0) should index a relocatable section. + +Also, it seems that our use of '-pie -shared' is contradictory, and +thus ambiguous. In general, the way KASLR is wired up at the moment +is highly tailored to how ld.bfd happens to implement (and conflate) +PIE executables and shared libraries, so given the current effort to +support other toolchains, let's fix some of these issues as well. + +- Drop the -pie linker argument and just leave -shared. In ld.bfd, + the differences between them are unclear (except for the ELF type + of the produced image [0]) but lld chokes on seeing both at the + same time. + +- Rename the .rela output section to .rela.dyn, as is customary for + shared libraries and PIE executables, so that it is not misidentified + by readelf as a static relocation section (producing the warnings + above). + +- Pass the -z notext and -z norelro options to explicitly instruct the + linker to permit text relocations, and to omit the RELRO program + header (which requires a certain section layout that we don't adhere + to in the kernel). These are the defaults for current versions of + ld.bfd. + +- Discard .eh_frame and .gnu.hash sections to avoid them from being + emitted between .head.text and .text, screwing up the section layout. + +These changes only affect the ELF image, and produce the same binary +image. + +[0] b9dce7f1ba01 ("arm64: kernel: force ET_DYN ELF type for ...") + +Cc: Nick Desaulniers +Cc: Peter Smith +Tested-by: Nick Desaulniers +Signed-off-by: Ard Biesheuvel +Signed-off-by: Will Deacon +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm64/Makefile | 2 +- + arch/arm64/kernel/vmlinux.lds.S | 9 +++++---- + 2 files changed, 6 insertions(+), 5 deletions(-) + +--- a/arch/arm64/Makefile ++++ b/arch/arm64/Makefile +@@ -18,7 +18,7 @@ ifeq ($(CONFIG_RELOCATABLE), y) + # Pass --no-apply-dynamic-relocs to restore pre-binutils-2.27 behaviour + # for relative relocs, since this leads to better Image compression + # with the relocation offsets always being zero. +-LDFLAGS_vmlinux += -pie -shared -Bsymbolic \ ++LDFLAGS_vmlinux += -shared -Bsymbolic -z notext -z norelro \ + $(call ld-option, --no-apply-dynamic-relocs) + endif + +--- a/arch/arm64/kernel/vmlinux.lds.S ++++ b/arch/arm64/kernel/vmlinux.lds.S +@@ -99,7 +99,8 @@ SECTIONS + *(.discard) + *(.discard.*) + *(.interp .dynamic) +- *(.dynsym .dynstr .hash) ++ *(.dynsym .dynstr .hash .gnu.hash) ++ *(.eh_frame) + } + + . = KIMAGE_VADDR + TEXT_OFFSET; +@@ -176,12 +177,12 @@ SECTIONS + + PERCPU_SECTION(L1_CACHE_BYTES) + +- .rela : ALIGN(8) { ++ .rela.dyn : ALIGN(8) { + *(.rela .rela*) + } + +- __rela_offset = ABSOLUTE(ADDR(.rela) - KIMAGE_VADDR); +- __rela_size = SIZEOF(.rela); ++ __rela_offset = ABSOLUTE(ADDR(.rela.dyn) - KIMAGE_VADDR); ++ __rela_size = SIZEOF(.rela.dyn); + + . = ALIGN(SEGMENT_ALIGN); + __initdata_end = .; diff --git a/queue-4.19/series b/queue-4.19/series index 9e3267cd71c..a22e9932e6a 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -123,3 +123,4 @@ pci-pm-allow-runtime-pm-without-callback-functions.patch lockd-show-pid-of-lockd-for-remote-locks.patch nfsd4-zero-length-write-should-succeed.patch arm64-drop-linker-script-hack-to-hide-__efistub_-symbols.patch +arm64-relocatable-fix-inconsistencies-in-linker-script-and-options.patch