arm64: mm: correct the inside linear map range during hotplug check
authorPavel Tatashin <pasha.tatashin@soleen.com>
Tue, 16 Feb 2021 15:03:51 +0000 (10:03 -0500)
committerWill Deacon <will@kernel.org>
Mon, 22 Mar 2021 12:47:40 +0000 (12:47 +0000)
commitee7febce051945be28ad86d16a15886f878204de
treecfb7e00d6872e725875bb8acc9369a43bc33bd22
parent141f8202cfa4192c3af79b6cbd68e7760bb01b5a
arm64: mm: correct the inside linear map range during hotplug check

Memory hotplug may fail on systems with CONFIG_RANDOMIZE_BASE because the
linear map range is not checked correctly.

The start physical address that linear map covers can be actually at the
end of the range because of randomization. Check that and if so reduce it
to 0.

This can be verified on QEMU with setting kaslr-seed to ~0ul:

memstart_offset_seed = 0xffff
START: __pa(_PAGE_OFFSET(vabits_actual)) = ffff9000c0000000
END:   __pa(PAGE_END - 1) =  1000bfffffff

Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Fixes: 58284a901b42 ("arm64/mm: Validate hotplug range before creating linear mapping")
Tested-by: Tyler Hicks <tyhicks@linux.microsoft.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Link: https://lore.kernel.org/r/20210216150351.129018-2-pasha.tatashin@soleen.com
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/mm/mmu.c