From: Ingo Molnar Date: Sun, 20 Jul 2008 15:24:03 +0000 (+0200) Subject: x86: fix kernel_physical_mapping_init() for large x86 systems X-Git-Tag: v2.6.26.1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c679441bc5724cee72d19ad786c03236ad6c68d;p=thirdparty%2Fkernel%2Fstable.git x86: fix kernel_physical_mapping_init() for large x86 systems based on e22146e610bb7aed63282148740ab1d1b91e1d90 upstream Fix bug in kernel_physical_mapping_init() that causes kernel page table to be built incorrectly for systems with greater than 512GB of memory. Signed-off-by: Jack Steiner Cc: linux-mm@kvack.org Signed-off-by: Ingo Molnar Cc: Oliver Pinter Signed-off-by: Ingo Molnar Signed-off-by: Greg Kroah-Hartman --- diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 819dad973b137..7b27710ce3b70 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -579,7 +579,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start, unsigned lon else pud = alloc_low_page(&pud_phys); - next = start + PGDIR_SIZE; + next = (start + PGDIR_SIZE) & PGDIR_MASK; if (next > end) next = end; last_map_addr = phys_pud_init(pud, __pa(start), __pa(next));