]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit900cf1d8668c806c21662a51d02d52900d3fdc60
treecfb7e00d6872e725875bb8acc9369a43bc33bd22
parente0a3d571ad86d292fe5c1db44ef5e11b951fa930
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: de2bfdfe3ca2 ("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