x86: fix kernel_physical_mapping_init() for large x86 systems
authorJack Steiner <steiner@sgi.com>
Wed, 16 Jul 2008 16:11:59 +0000 (11:11 -0500)
committerIngo Molnar <mingo@elte.hu>
Wed, 16 Jul 2008 16:27:36 +0000 (18:27 +0200)
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>
arch/x86/mm/init_64.c

index 27de2435e0080f419e3c5ac7386f710b993a93cd..306049edd55322a3c5aec4c7acdf3e38e224eda6 100644 (file)
@@ -644,7 +644,7 @@ static unsigned long __init kernel_physical_mapping_init(unsigned long start,
                unsigned long pud_phys;
                pud_t *pud;
 
-               next = start + PGDIR_SIZE;
+               next = (start + PGDIR_SIZE) & PGDIR_MASK;
                if (next > end)
                        next = end;