aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-07-20 17:24:03 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2008-08-01 11:50:50 -0700
commit0d4f40b70ed6b905e21a8de006a80415ba76997f (patch)
tree1fe54daf232599e6febce1cec7ed5c86cf974bc3
parentc2a0d55885173608ecdd5b653969e5228b5b70c0 (diff)
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 <steiner@sgi.com> Cc: linux-mm@kvack.org Signed-off-by: Ingo Molnar <mingo@elte.hu> Cc: Oliver Pinter <oliver.pntr@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--arch/x86/mm/init_64.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index b2c5231c468..8e47740b13a 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));