diff options
Diffstat (limited to 'mm/mmap.c')
-rw-r--r-- | mm/mmap.c | 19 |
1 files changed, 9 insertions, 10 deletions
@@ -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 |
307 | static int browse_rb(struct rb_root *root) | 301 | static 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 | ||