> > +void radix_tree_destroy(struct radix_tree_root *root, void > (*slot_free)(void *)) > > +{ > > + if (root->rnode == NULL) > > + return; > > + if (root->height == 0) > > + slot_free(root->rnode); > > Don't you want indirect_to_ptr(root->rnode) here? You probably also > don't > want the callback in the !radix_tree_is_indirect_ptr() case. > > > + else { > > + radix_tree_node_destroy(root->rnode, root->height, > slot_free); > > + radix_tree_node_free(root->rnode); > > + root->height = 0; > > + } > > + root->rnode = NULL; > > +} > > The above will handle the nodes, but what about the root? It looks like > you're at least going to leak tags on the root, so at the very least > you'd still want a root_tag_clear_all() here. Thanks for your help. Will do both. My use model doesn't require tags or rcu, so my hacked version of radix_tree_destroy missed those subtleties. So my assumption was correct? There is no way to efficiently destroy an entire radix tree without adding this new routine? Thanks, Dan -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href