From: Greg Kroah-Hartman Date: Tue, 4 Jul 2017 07:59:57 +0000 (+0200) Subject: drop queue-4.4/arm64-assembler-make-adr_l-work-in-modules-under-kaslr.patch X-Git-Tag: v3.18.60~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=81e530e2e22d6d9e8c4e4d8f424bb710e3898b73;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-4.4/arm64-assembler-make-adr_l-work-in-modules-under-kaslr.patch --- diff --git a/queue-4.4/arm64-assembler-make-adr_l-work-in-modules-under-kaslr.patch b/queue-4.4/arm64-assembler-make-adr_l-work-in-modules-under-kaslr.patch deleted file mode 100644 index 4f77f7c055c..00000000000 --- a/queue-4.4/arm64-assembler-make-adr_l-work-in-modules-under-kaslr.patch +++ /dev/null @@ -1,103 +0,0 @@ -From foo@baz Mon Jul 3 13:29:24 CEST 2017 -From: Ard Biesheuvel -Date: Wed, 11 Jan 2017 14:54:53 +0000 -Subject: arm64: assembler: make adr_l work in modules under KASLR - -From: Ard Biesheuvel - - -[ Upstream commit 41c066f2c4d436c535616fe182331766c57838f0 ] - -When CONFIG_RANDOMIZE_MODULE_REGION_FULL=y, the offset between loaded -modules and the core kernel may exceed 4 GB, putting symbols exported -by the core kernel out of the reach of the ordinary adrp/add instruction -pairs used to generate relative symbol references. So make the adr_l -macro emit a movz/movk sequence instead when executing in module context. - -While at it, remove the pointless special case for the stack pointer. - -Acked-by: Mark Rutland -Acked-by: Will Deacon -Signed-off-by: Ard Biesheuvel -Signed-off-by: Catalin Marinas -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - arch/arm64/include/asm/assembler.h | 36 +++++++++++++++++++++++++++--------- - 1 file changed, 27 insertions(+), 9 deletions(-) - ---- a/arch/arm64/include/asm/assembler.h -+++ b/arch/arm64/include/asm/assembler.h -@@ -147,22 +147,25 @@ lr .req x30 // link register - - /* - * Pseudo-ops for PC-relative adr/ldr/str , where -- * is within the range +/- 4 GB of the PC. -+ * is within the range +/- 4 GB of the PC when running -+ * in core kernel context. In module context, a movz/movk sequence -+ * is used, since modules may be loaded far away from the kernel -+ * when KASLR is in effect. - */ - /* - * @dst: destination register (64 bit wide) - * @sym: name of the symbol -- * @tmp: optional scratch register to be used if == sp, which -- * is not allowed in an adrp instruction - */ -- .macro adr_l, dst, sym, tmp= -- .ifb \tmp -+ .macro adr_l, dst, sym -+#ifndef MODULE - adrp \dst, \sym - add \dst, \dst, :lo12:\sym -- .else -- adrp \tmp, \sym -- add \dst, \tmp, :lo12:\sym -- .endif -+#else -+ movz \dst, #:abs_g3:\sym -+ movk \dst, #:abs_g2_nc:\sym -+ movk \dst, #:abs_g1_nc:\sym -+ movk \dst, #:abs_g0_nc:\sym -+#endif - .endm - - /* -@@ -173,6 +176,7 @@ lr .req x30 // link register - * the address - */ - .macro ldr_l, dst, sym, tmp= -+#ifndef MODULE - .ifb \tmp - adrp \dst, \sym - ldr \dst, [\dst, :lo12:\sym] -@@ -180,6 +184,15 @@ lr .req x30 // link register - adrp \tmp, \sym - ldr \dst, [\tmp, :lo12:\sym] - .endif -+#else -+ .ifb \tmp -+ adr_l \dst, \sym -+ ldr \dst, [\dst] -+ .else -+ adr_l \tmp, \sym -+ ldr \dst, [\tmp] -+ .endif -+#endif - .endm - - /* -@@ -189,8 +202,13 @@ lr .req x30 // link register - * while needs to be preserved. - */ - .macro str_l, src, sym, tmp -+#ifndef MODULE - adrp \tmp, \sym - str \src, [\tmp, :lo12:\sym] -+#else -+ adr_l \tmp, \sym -+ str \src, [\tmp] -+#endif - .endm - - /* diff --git a/queue-4.4/series b/queue-4.4/series index c1760bc6fb8..756dd838180 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -69,7 +69,6 @@ kernel-panic.c-add-missing-n.patch hid-i2c-hid-add-sleep-between-power-on-and-reset.patch scsi-lpfc-avoid-double-free-of-resource-identifiers.patch spi-davinci-use-dma_mapping_error.patch -arm64-assembler-make-adr_l-work-in-modules-under-kaslr.patch mac80211-initialize-smps-field-in-ht-capabilities.patch x86-mpx-use-compatible-types-in-comparison-to-fix-sparse-error.patch coredump-ensure-proper-size-of-sparse-core-files.patch