Commit 5f5837d2 authored by Kent Overstreet's avatar Kent Overstreet

bcache: Do bkey_put() in btree_split() error path

This error path shouldn't have been hit in practice.. and we've got reworked
reserve code coming soon so that it shouldn't _ever_ be bit... but if we've got
code for this error path it should be correct.
Signed-off-by: default avatarKent Overstreet <kmo@daterainc.com>
parent 78365411
...@@ -2191,18 +2191,21 @@ static int btree_split(struct btree *b, struct btree_op *op, ...@@ -2191,18 +2191,21 @@ static int btree_split(struct btree *b, struct btree_op *op,
return 0; return 0;
err_free2: err_free2:
bkey_put(b->c, &n2->key);
btree_node_free(n2); btree_node_free(n2);
rw_unlock(true, n2); rw_unlock(true, n2);
err_free1: err_free1:
bkey_put(b->c, &n1->key);
btree_node_free(n1); btree_node_free(n1);
rw_unlock(true, n1); rw_unlock(true, n1);
err: err:
WARN(1, "bcache: btree split failed");
if (n3 == ERR_PTR(-EAGAIN) || if (n3 == ERR_PTR(-EAGAIN) ||
n2 == ERR_PTR(-EAGAIN) || n2 == ERR_PTR(-EAGAIN) ||
n1 == ERR_PTR(-EAGAIN)) n1 == ERR_PTR(-EAGAIN))
return -EAGAIN; return -EAGAIN;
pr_warn("couldn't split");
return -ENOMEM; return -ENOMEM;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment