summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-03-05 13:35:49 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-03-20 21:39:50 -0400
commit8b2a12382ccc9df31b27dac37fe04dffe088b57c (patch)
tree77e79b540a288b3c2bce78bfd7aff4c58511ecd1
parent038c7aa16a38059ac23dfe9caa6954226ea20728 (diff)
VM: can't go through the inner loop in unmap_vmas() more than once...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--mm/memory.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/memory.c b/mm/memory.c
index 1b6712a9720d..f2317c85704e 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1354,7 +1354,7 @@ unsigned long unmap_vmas(struct mmu_gather *tlb,
if (unlikely(is_pfn_mapping(vma)))
untrack_pfn_vma(vma, 0, 0);
- while (start != end) {
+ if (start != end) {
if (unlikely(is_vm_hugetlb_page(vma))) {
/*
* It is undesirable to test vma->vm_file as it
@@ -1371,8 +1371,8 @@ unsigned long unmap_vmas(struct mmu_gather *tlb,
unmap_hugepage_range(vma, start, end, NULL);
} else
unmap_page_range(tlb, vma, start, end, details);
- start = end;
}
+ start = end;
}
mmu_notifier_invalidate_range_end(mm, start_addr, end_addr);