unsigned long last, void *entry, gfp_t gfp);
int mtree_store(struct maple_tree *mt, unsigned long index,
void *entry, gfp_t gfp);
+void __mt_destroy(struct maple_tree *mt);
/**
* mtree_empty() - Determine if a tree has any present entries.
}
EXPORT_SYMBOL(mtree_erase);
+void __mt_destroy(struct maple_tree *mt)
+{
+ void *root = mt_root_locked(mt);
+
+ rcu_assign_pointer(mt->ma_root, NULL);
+ if (xa_is_node(root))
+ mte_destroy_walk(root, mt);
+
+ mt->ma_flags = 0;
+}
+EXPORT_SYMBOL_GPL(__mt_destroy);
+
/*
* mtree_destroy() - Destroy a maple tree
* @mt: The maple tree
*/
void mtree_destroy(struct maple_tree *mt)
{
- void *root;
-
mtree_lock(mt);
- root = mt_root_locked(mt);
- rcu_assign_pointer(mt->ma_root, NULL);
- if (xa_is_node(root))
- mte_destroy_walk(root, mt);
-
- mt->ma_flags = 0;
+ __mt_destroy(mt);
mtree_unlock(mt);
}
EXPORT_SYMBOL(mtree_destroy);