aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/mm/init_32.c1
-rw-r--r--arch/x86/mm/init_64.c5
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c
index 11a58001b4ce..27f7fc69cf8a 100644
--- a/arch/x86/mm/init_32.c
+++ b/arch/x86/mm/init_32.c
@@ -310,6 +310,7 @@ repeat:
310 __pgprot(PTE_IDENT_ATTR | 310 __pgprot(PTE_IDENT_ATTR |
311 _PAGE_PSE); 311 _PAGE_PSE);
312 312
313 pfn &= PMD_MASK >> PAGE_SHIFT;
313 addr2 = (pfn + PTRS_PER_PTE-1) * PAGE_SIZE + 314 addr2 = (pfn + PTRS_PER_PTE-1) * PAGE_SIZE +
314 PAGE_OFFSET + PAGE_SIZE-1; 315 PAGE_OFFSET + PAGE_SIZE-1;
315 316
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 32c7e3847cf6..869372a5d3cf 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -464,7 +464,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end,
464 pages++; 464 pages++;
465 spin_lock(&init_mm.page_table_lock); 465 spin_lock(&init_mm.page_table_lock);
466 set_pte((pte_t *)pmd, 466 set_pte((pte_t *)pmd,
467 pfn_pte(address >> PAGE_SHIFT, 467 pfn_pte((address & PMD_MASK) >> PAGE_SHIFT,
468 __pgprot(pgprot_val(prot) | _PAGE_PSE))); 468 __pgprot(pgprot_val(prot) | _PAGE_PSE)));
469 spin_unlock(&init_mm.page_table_lock); 469 spin_unlock(&init_mm.page_table_lock);
470 last_map_addr = next; 470 last_map_addr = next;
@@ -541,7 +541,8 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end,
541 pages++; 541 pages++;
542 spin_lock(&init_mm.page_table_lock); 542 spin_lock(&init_mm.page_table_lock);
543 set_pte((pte_t *)pud, 543 set_pte((pte_t *)pud,
544 pfn_pte(addr >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); 544 pfn_pte((addr & PUD_MASK) >> PAGE_SHIFT,
545 PAGE_KERNEL_LARGE));
545 spin_unlock(&init_mm.page_table_lock); 546 spin_unlock(&init_mm.page_table_lock);
546 last_map_addr = next; 547 last_map_addr = next;
547 continue; 548 continue;