summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorJoe Thornber <ejt@redhat.com>2018-08-20 15:23:40 +0100
committerJoe Thornber <ejt@redhat.com>2018-08-20 15:23:40 +0100
commit8b05f1f230517aa42878aa160d94383ed0534c64 (patch)
tree1562c429679efcf2cae5ce8ee7eb66f70cea7cb2 /base
parent54668feaabead997cdf099c970999af667bcf274 (diff)
downloadlvm2-8b05f1f230517aa42878aa160d94383ed0534c64.tar.gz
radix-tree: Fix bug in remove_prefix()
Accidental decrement of the nr entries when a n256 didn't have the entry in the first place.
Diffstat (limited to 'base')
-rw-r--r--base/data-struct/radix-tree.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/base/data-struct/radix-tree.c b/base/data-struct/radix-tree.c
index 1d24dadf2..1eef1f896 100644
--- a/base/data-struct/radix-tree.c
+++ b/base/data-struct/radix-tree.c
@@ -907,6 +907,9 @@ static bool _remove_subtree(struct radix_tree *rt, struct value *root, uint8_t *
case NODE256:
n256 = root->value.ptr;
+ if (n256->values[*kb].type == UNSET)
+ return true; // No entries
+
r = _remove_subtree(rt, n256->values + (*kb), kb + 1, ke, count);
if (r && n256->values[*kb].type == UNSET) {
n256->nr_entries--;