UPSTREAM: arm64: avoid dynamic relocations in early boot code
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Sat, 26 Dec 2015 11:46:40 +0000 (12:46 +0100)
committerJeff Vander Stoep <jeffv@google.com>
Thu, 22 Sep 2016 20:38:22 +0000 (13:38 -0700)
commit68c7746e3ca999b2d3c75af8ac714ad28c1a4288
tree8e9c876218beeb5674474948c21da3d8bf661d16
parentee1ef5eefa116dd23b1311c019e6d4d115bb1f4d
UPSTREAM: arm64: avoid dynamic relocations in early boot code

Before implementing KASLR for arm64 by building a self-relocating PIE
executable, we have to ensure that values we use before the relocation
routine is executed are not subject to dynamic relocation themselves.
This applies not only to virtual addresses, but also to values that are
supplied by the linker at build time and relocated using R_AARCH64_ABS64
relocations.

So instead, use assemble time constants, or force the use of static
relocations by folding the constants into the instructions.

Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Bug: 30369029
Patchset: kaslr-arm64-4.4

(cherry picked from commit 2bf31a4a05f5b00f37d65ba029d36a0230286cb7)
Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
Change-Id: Icce0176591e3c0ae444e1ea54258efe677933c5b
arch/arm64/kernel/efi-entry.S
arch/arm64/kernel/head.S