diff options
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/memory.c b/mm/memory.c index b25f5e58a14c..788a62810340 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -562,7 +562,8 @@ static void zap_pte_range(struct mmu_gather *tlb, pmd_t *pmd, | |||
562 | page->index > details->last_index)) | 562 | page->index > details->last_index)) |
563 | continue; | 563 | continue; |
564 | } | 564 | } |
565 | ptent = ptep_get_and_clear(tlb->mm, addr, pte); | 565 | ptent = ptep_get_and_clear_full(tlb->mm, addr, pte, |
566 | tlb->fullmm); | ||
566 | tlb_remove_tlb_entry(tlb, pte, addr); | 567 | tlb_remove_tlb_entry(tlb, pte, addr); |
567 | if (unlikely(!page)) | 568 | if (unlikely(!page)) |
568 | continue; | 569 | continue; |
@@ -590,7 +591,7 @@ static void zap_pte_range(struct mmu_gather *tlb, pmd_t *pmd, | |||
590 | continue; | 591 | continue; |
591 | if (!pte_file(ptent)) | 592 | if (!pte_file(ptent)) |
592 | free_swap_and_cache(pte_to_swp_entry(ptent)); | 593 | free_swap_and_cache(pte_to_swp_entry(ptent)); |
593 | pte_clear(tlb->mm, addr, pte); | 594 | pte_clear_full(tlb->mm, addr, pte, tlb->fullmm); |
594 | } while (pte++, addr += PAGE_SIZE, addr != end); | 595 | } while (pte++, addr += PAGE_SIZE, addr != end); |
595 | pte_unmap(pte - 1); | 596 | pte_unmap(pte - 1); |
596 | } | 597 | } |