diff --git a/[refs] b/[refs] index 028257dd24b1..71b38ecc4db7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d89b8f40fca43cab829fea5c0e7d3951db2fb4bd +refs/heads/master: 90f9dd8f72773152b69042debd6b9ed6d224703a diff --git a/trunk/lib/radix-tree.c b/trunk/lib/radix-tree.c index c0bd4a914803..1e5b17dc7e3d 100644 --- a/trunk/lib/radix-tree.c +++ b/trunk/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--) {