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.25.14~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d4f40b70ed6b905e21a8de006a80415ba76997f;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 b2c5231c46864..8e47740b13a6c 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -427,7 +427,7 @@ void __init_refok init_memory_mapping(unsigned long start, unsigned long end) else pud = alloc_low_page(&pud_phys); - next = start + PGDIR_SIZE; + next = (start + PGDIR_SIZE) & PGDIR_MASK; if (next > end) next = end; phys_pud_init(pud, __pa(start), __pa(next));