Commit 8add7054 authored by Yueyi Li's avatar Yueyi Li Committed by Greg Kroah-Hartman

arm64: kaslr: Reserve size of ARM64_MEMSTART_ALIGN in linear region

[ Upstream commit c8a43c18 ]

When KASLR is enabled (CONFIG_RANDOMIZE_BASE=y), the top 4K of kernel
virtual address space may be mapped to physical addresses despite being
reserved for ERR_PTR values.

Fix the randomization of the linear region so that we avoid mapping the
last page of the virtual address space.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarliyueyi <liyueyi@live.com>
[will: rewrote commit message; merged in suggestion from Ard]
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarSasha Levin (Microsoft) <sashal@kernel.org>
parent 83b4ccf2
...@@ -447,7 +447,7 @@ void __init arm64_memblock_init(void) ...@@ -447,7 +447,7 @@ void __init arm64_memblock_init(void)
* memory spans, randomize the linear region as well. * memory spans, randomize the linear region as well.
*/ */
if (memstart_offset_seed > 0 && range >= ARM64_MEMSTART_ALIGN) { if (memstart_offset_seed > 0 && range >= ARM64_MEMSTART_ALIGN) {
range = range / ARM64_MEMSTART_ALIGN + 1; range /= ARM64_MEMSTART_ALIGN;
memstart_addr -= ARM64_MEMSTART_ALIGN * memstart_addr -= ARM64_MEMSTART_ALIGN *
((range * memstart_offset_seed) >> 16); ((range * memstart_offset_seed) >> 16);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment