MA_STATE(mas, mt, 0, 0);
rcu_read_lock();
mas_for_each(&mas, vma_mt, ULONG_MAX) {
- if (mas_retry(&mas, vma_mt)) {
- count++;
- if (count > 100) {
- printk("%s: count exceeded\n", __func__);
- printk("We are here %px %lu\n", mas.node,
- mas.index);
- mt_dump(mt);
- count = 0;
- }
+ if (mas_retry(&mas, vma_mt))
continue;
- }
if (vma && vma == ignore)
vma = vma->vm_next;
__vma_mt_store(mm, vma);
__vma_link_list(mm, vma, prev);
__vma_link_rb(mm, vma, rb_link, rb_parent);
- //validate_mm_mt(mm, NULL);
}
static void vma_link(struct mm_struct *mm, struct vm_area_struct *vma,
validate_mm(mm);
validate_mm_mt(mm, NULL);
- //printk("%s %px %lu %lu\n", __func__, vma, start, end);
if (next && !insert) {
struct vm_area_struct *exporter = NULL, *importer = NULL;
*/
/* maple tree store is done in the __vma_link call in this
* call graph */
-// printk("insert %px %lu - %lu\n", insert, insert->vm_start, insert->vm_end);
__insert_vm_struct(mm, insert);
} else {
if (start_changed)
vma = remove_vma(vma);
cond_resched();
}
+#if MT_DEBUG
+ printk("mt_mod: %px DESTROY\n", mm);
+#endif
+ mtree_destroy(&mm->mm_mt);
vm_unacct_memory(nr_accounted);
}