]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
vm: simplify unmap_vmas() calling convention
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 6 May 2012 20:43:15 +0000 (13:43 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 6 May 2012 20:52:07 +0000 (13:52 -0700)
None of the callers want to pass in 'zap_details', and it doesn't even
make sense for the case of actually unmapping vma's.  So remove the
argument, and clean up the interface.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/mm.h
mm/memory.c
mm/mmap.c

index 74aa71bea1e4ff6bf0bd7a43dfdff37c870438ee..0aeded3a2f7cd24f6166db4caec2070aa0fa51f9 100644 (file)
@@ -898,8 +898,7 @@ void zap_page_range(struct vm_area_struct *vma, unsigned long address,
                unsigned long size, struct zap_details *);
 void unmap_vmas(struct mmu_gather *tlb,
                struct vm_area_struct *start_vma, unsigned long start_addr,
-               unsigned long end_addr, unsigned long *nr_accounted,
-               struct zap_details *);
+               unsigned long end_addr, unsigned long *nr_accounted);
 
 /**
  * mm_walk - callbacks for walk_page_range
index 6105f475fa8633edf5180792b2cf0c5288734f08..f7b6c98597966739259c1987d812681550a11a1d 100644 (file)
@@ -1340,7 +1340,6 @@ static void unmap_single_vma(struct mmu_gather *tlb,
  * @start_addr: virtual address at which to start unmapping
  * @end_addr: virtual address at which to end unmapping
  * @nr_accounted: Place number of unmapped pages in vm-accountable vma's here
- * @details: details of nonlinear truncation or shared cache invalidation
  *
  * Unmap all pages in the vma list.
  *
@@ -1355,15 +1354,13 @@ static void unmap_single_vma(struct mmu_gather *tlb,
  */
 void unmap_vmas(struct mmu_gather *tlb,
                struct vm_area_struct *vma, unsigned long start_addr,
-               unsigned long end_addr, unsigned long *nr_accounted,
-               struct zap_details *details)
+               unsigned long end_addr, unsigned long *nr_accounted)
 {
        struct mm_struct *mm = vma->vm_mm;
 
        mmu_notifier_invalidate_range_start(mm, start_addr, end_addr);
        for ( ; vma && vma->vm_start < end_addr; vma = vma->vm_next)
-               unmap_single_vma(tlb, vma, start_addr, end_addr, nr_accounted,
-                                details);
+               unmap_single_vma(tlb, vma, start_addr, end_addr, nr_accounted, NULL);
        mmu_notifier_invalidate_range_end(mm, start_addr, end_addr);
 }
 
@@ -1376,19 +1373,22 @@ void unmap_vmas(struct mmu_gather *tlb,
  *
  * Caller must protect the VMA list
  */
-void zap_page_range(struct vm_area_struct *vma, unsigned long address,
+void zap_page_range(struct vm_area_struct *vma, unsigned long start,
                unsigned long size, struct zap_details *details)
 {
        struct mm_struct *mm = vma->vm_mm;
        struct mmu_gather tlb;
-       unsigned long end = address + size;
+       unsigned long end = start + size;
        unsigned long nr_accounted = 0;
 
        lru_add_drain();
        tlb_gather_mmu(&tlb, mm, 0);
        update_hiwater_rss(mm);
-       unmap_vmas(&tlb, vma, address, end, &nr_accounted, details);
-       tlb_finish_mmu(&tlb, address, end);
+       mmu_notifier_invalidate_range_start(mm, start, end);
+       for ( ; vma && vma->vm_start < end; vma = vma->vm_next)
+               unmap_single_vma(&tlb, vma, start, end, &nr_accounted, details);
+       mmu_notifier_invalidate_range_end(mm, start, end);
+       tlb_finish_mmu(&tlb, start, end);
 }
 
 /**
index 848ef52d96031f5061bc86582aa0120ccd0394e8..58806106fab6ba0461b6d9bec7d650291ee657a9 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1917,7 +1917,7 @@ static void unmap_region(struct mm_struct *mm,
        lru_add_drain();
        tlb_gather_mmu(&tlb, mm, 0);
        update_hiwater_rss(mm);
-       unmap_vmas(&tlb, vma, start, end, &nr_accounted, NULL);
+       unmap_vmas(&tlb, vma, start, end, &nr_accounted);
        vm_unacct_memory(nr_accounted);
        free_pgtables(&tlb, vma, prev ? prev->vm_end : FIRST_USER_ADDRESS,
                                 next ? next->vm_start : 0);
@@ -2305,7 +2305,7 @@ void exit_mmap(struct mm_struct *mm)
        tlb_gather_mmu(&tlb, mm, 1);
        /* update_hiwater_rss(mm) here? but nobody should be looking */
        /* Use -1 here to ensure all VMAs in the mm are unmapped */
-       unmap_vmas(&tlb, vma, 0, -1, &nr_accounted, NULL);
+       unmap_vmas(&tlb, vma, 0, -1, &nr_accounted);
        vm_unacct_memory(nr_accounted);
 
        free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, 0);