aboutsummaryrefslogtreecommitdiffstats
path: root/mm/mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/mmap.c')
-rw-r--r--mm/mmap.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/mm/mmap.c b/mm/mmap.c
index 8a111792b8db..c43b28457007 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1640,6 +1640,8 @@ find_extend_vma(struct mm_struct * mm, unsigned long addr)
1640 */ 1640 */
1641static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma) 1641static void remove_vma_list(struct mm_struct *mm, struct vm_area_struct *vma)
1642{ 1642{
1643 /* Update high watermark before we lower total_vm */
1644 update_hiwater_vm(mm);
1643 do { 1645 do {
1644 long nrpages = vma_pages(vma); 1646 long nrpages = vma_pages(vma);
1645 1647
@@ -1668,6 +1670,7 @@ static void unmap_region(struct mm_struct *mm,
1668 lru_add_drain(); 1670 lru_add_drain();
1669 spin_lock(&mm->page_table_lock); 1671 spin_lock(&mm->page_table_lock);
1670 tlb = tlb_gather_mmu(mm, 0); 1672 tlb = tlb_gather_mmu(mm, 0);
1673 update_hiwater_rss(mm);
1671 unmap_vmas(&tlb, mm, vma, start, end, &nr_accounted, NULL); 1674 unmap_vmas(&tlb, mm, vma, start, end, &nr_accounted, NULL);
1672 vm_unacct_memory(nr_accounted); 1675 vm_unacct_memory(nr_accounted);
1673 free_pgtables(&tlb, vma, prev? prev->vm_end: FIRST_USER_ADDRESS, 1676 free_pgtables(&tlb, vma, prev? prev->vm_end: FIRST_USER_ADDRESS,
@@ -1953,6 +1956,7 @@ void exit_mmap(struct mm_struct *mm)
1953 1956
1954 flush_cache_mm(mm); 1957 flush_cache_mm(mm);
1955 tlb = tlb_gather_mmu(mm, 1); 1958 tlb = tlb_gather_mmu(mm, 1);
1959 /* Don't update_hiwater_rss(mm) here, do_exit already did */
1956 /* Use -1 here to ensure all VMAs in the mm are unmapped */ 1960 /* Use -1 here to ensure all VMAs in the mm are unmapped */
1957 end = unmap_vmas(&tlb, mm, vma, 0, -1, &nr_accounted, NULL); 1961 end = unmap_vmas(&tlb, mm, vma, 0, -1, &nr_accounted, NULL);
1958 vm_unacct_memory(nr_accounted); 1962 vm_unacct_memory(nr_accounted);