dm btree: fix leak of bufio-backed block in btree_split_sibling error path
commit 30ce6e1cc5a0f781d60227e9096c86e188d2c2bd upstream. The block allocated at the start of btree_split_sibling() is never released if later insert_at() fails. Fix this by releasing the previously allocated bufio block using unlock_block(). Reported-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
daaf3fd914
commit
d6671b052b
|
@ -455,8 +455,10 @@ static int btree_split_sibling(struct shadow_spine *s, dm_block_t root,
|
|||
|
||||
r = insert_at(sizeof(__le64), pn, parent_index + 1,
|
||||
le64_to_cpu(rn->keys[0]), &location);
|
||||
if (r)
|
||||
if (r) {
|
||||
unlock_block(s->info, right);
|
||||
return r;
|
||||
}
|
||||
|
||||
if (key < le64_to_cpu(rn->keys[0])) {
|
||||
unlock_block(s->info, right);
|
||||
|
|
Loading…
Reference in New Issue