aboutsummaryrefslogtreecommitdiffstats
path: root/mm/mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/mmap.c')
-rw-r--r--mm/mmap.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/mm/mmap.c b/mm/mmap.c
index 2e580ed79211..deb422c39e21 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -51,12 +51,6 @@ static void unmap_region(struct mm_struct *mm,
51 struct vm_area_struct *vma, struct vm_area_struct *prev, 51 struct vm_area_struct *vma, struct vm_area_struct *prev,
52 unsigned long start, unsigned long end); 52 unsigned long start, unsigned long end);
53 53
54/*
55 * WARNING: the debugging will use recursive algorithms so never enable this
56 * unless you know what you are doing.
57 */
58#undef DEBUG_MM_RB
59
60/* description of effects of mapping type and prot in current implementation. 54/* description of effects of mapping type and prot in current implementation.
61 * this is due to the limited x86 page protection hardware. The expected 55 * this is due to the limited x86 page protection hardware. The expected
62 * behavior is in parens: 56 * behavior is in parens:
@@ -303,7 +297,7 @@ out:
303 return retval; 297 return retval;
304} 298}
305 299
306#ifdef DEBUG_MM_RB 300#ifdef CONFIG_DEBUG_VM_RB
307static int browse_rb(struct rb_root *root) 301static int browse_rb(struct rb_root *root)
308{ 302{
309 int i = 0, j; 303 int i = 0, j;
@@ -337,9 +331,12 @@ void validate_mm(struct mm_struct *mm)
337{ 331{
338 int bug = 0; 332 int bug = 0;
339 int i = 0; 333 int i = 0;
340 struct vm_area_struct *tmp = mm->mmap; 334 struct vm_area_struct *vma = mm->mmap;
341 while (tmp) { 335 while (vma) {
342 tmp = tmp->vm_next; 336 struct anon_vma_chain *avc;
337 list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
338 anon_vma_interval_tree_verify(avc);
339 vma = vma->vm_next;
343 i++; 340 i++;
344 } 341 }
345 if (i != mm->map_count) 342 if (i != mm->map_count)
@@ -1790,6 +1787,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
1790 } 1787 }
1791 vma_unlock_anon_vma(vma); 1788 vma_unlock_anon_vma(vma);
1792 khugepaged_enter_vma_merge(vma); 1789 khugepaged_enter_vma_merge(vma);
1790 validate_mm(vma->vm_mm);
1793 return error; 1791 return error;
1794} 1792}
1795#endif /* CONFIG_STACK_GROWSUP || CONFIG_IA64 */ 1793#endif /* CONFIG_STACK_GROWSUP || CONFIG_IA64 */
@@ -1843,6 +1841,7 @@ int expand_downwards(struct vm_area_struct *vma,
1843 } 1841 }
1844 vma_unlock_anon_vma(vma); 1842 vma_unlock_anon_vma(vma);
1845 khugepaged_enter_vma_merge(vma); 1843 khugepaged_enter_vma_merge(vma);
1844 validate_mm(vma->vm_mm);
1846 return error; 1845 return error;
1847} 1846}
1848 1847