X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=lib%2Fradix-tree.c;h=1e5b17dc7e3d5c6da19bdb2376e7a0a120cbc722;hb=2e6e33bab6e1996a5dec9108fb467b52b841e7a8;hp=c0bd4a91480387e0c22d43b65d7f75fc2a522188;hpb=0825788ff27c7145e9d558cb2a26f3837d1f9be5;p=~andy%2Flinux diff --git a/lib/radix-tree.c b/lib/radix-tree.c index c0bd4a91480..1e5b17dc7e3 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c @@ -752,12 +752,14 @@ void *radix_tree_delete(struct radix_tree_root *root, unsigned long index) */ nr_cleared_tags = 0; for (tag = 0; tag < RADIX_TREE_TAGS; tag++) { + tags[tag] = 1; if (tag_get(pathp->node, tag, pathp->offset)) { tag_clear(pathp->node, tag, pathp->offset); - tags[tag] = 0; - nr_cleared_tags++; - } else - tags[tag] = 1; + if (!any_tag_set(pathp->node, tag)) { + tags[tag] = 0; + nr_cleared_tags++; + } + } } for (pathp--; nr_cleared_tags && pathp->node; pathp--) {