powerpc: Set max_mapnr correctly
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Tue, 12 Oct 2021 10:40:37 +0000 (12:40 +0200)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 13 Oct 2021 02:28:22 +0000 (13:28 +1100)
max_mapnr is used by virt_addr_valid() to check if a linear
address is valid.

It must only include lowmem PFNs, like other architectures.

Problem detected on a system with 1G mem (Only 768M are mapped), with
CONFIG_DEBUG_VIRTUAL and CONFIG_TEST_DEBUG_VIRTUAL, it didn't report
virt_to_phys(VMALLOC_START), VMALLOC_START being 0xf1000000.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/77d99037782ac4b3c3b0124fc4ae80ce7b760b05.1634035228.git.christophe.leroy@csgroup.eu
arch/powerpc/mm/mem.c

index 05b9c3f..bd5d91a 100644 (file)
@@ -256,7 +256,7 @@ void __init mem_init(void)
 #endif
 
        high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
-       set_max_mapnr(max_pfn);
+       set_max_mapnr(max_low_pfn);
 
        kasan_late_init();