arm64: mm: treat memstart_addr as a signed quantity
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Fri, 26 Feb 2016 16:57:14 +0000 (17:57 +0100)
committerAlex Shi <alex.shi@linaro.org>
Thu, 12 May 2016 00:41:36 +0000 (08:41 +0800)
commitb78c702db9fefface6f68cfade7a1afbadd829ab
tree76bee29e6b3c77723e5aec0266209fae59ee1ba3
parent27fa6e51b8ddfd0224dad957b85fd8097caa5978
arm64: mm: treat memstart_addr as a signed quantity

Commit c031a4213c11 ("arm64: kaslr: randomize the linear region")
implements randomization of the linear region, by subtracting a random
multiple of PUD_SIZE from memstart_addr. This causes the virtual mapping
of system RAM to move upwards in the linear region, and at the same time
causes memstart_addr to assume a value which may be negative if the offset
of system RAM in the physical space is smaller than its offset relative to
PAGE_OFFSET in the virtual space.

Since memstart_addr is effectively an offset now, redefine its type as s64
so that expressions involving shifting or division preserve its sign.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit 020d044f66874eba058ce8264fc550f3eca67879)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
arch/arm64/include/asm/memory.h
arch/arm64/mm/init.c