|
@@ -452,8 +452,8 @@ static void __init setup_memory_end(void)
|
|
|
#ifdef CONFIG_64BIT
|
|
|
vmalloc_size = VMALLOC_END ?: (128UL << 30) - MODULES_LEN;
|
|
|
tmp = (memory_end ?: max_physmem_end) / PAGE_SIZE;
|
|
|
- tmp = tmp * (sizeof(struct page) + PAGE_SIZE) + vmalloc_size;
|
|
|
- if (tmp <= (1UL << 42))
|
|
|
+ tmp = tmp * (sizeof(struct page) + PAGE_SIZE);
|
|
|
+ if (tmp + vmalloc_size + MODULES_LEN <= (1UL << 42))
|
|
|
vmax = 1UL << 42; /* 3-level kernel page table */
|
|
|
else
|
|
|
vmax = 1UL << 53; /* 4-level kernel page table */
|