bcachefs: Fix btree_path leaks in bch2_trans_update()
bch2_trans_update() had some dodgy gets() and puts() - this fixes a few leaks. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
This commit is contained in:
parent
b547d005d5
commit
92d2ec1092
@ -1336,8 +1336,6 @@ int bch2_trans_update(struct btree_trans *trans, struct btree_iter *iter,
|
||||
.ip_allocated = _RET_IP_,
|
||||
};
|
||||
|
||||
__btree_path_get(n.path, true);
|
||||
|
||||
#ifdef CONFIG_BCACHEFS_DEBUG
|
||||
trans_for_each_update(trans, i)
|
||||
BUG_ON(i != trans->updates &&
|
||||
@ -1374,16 +1372,17 @@ int bch2_trans_update(struct btree_trans *trans, struct btree_iter *iter,
|
||||
if (n.cached && !i->cached) {
|
||||
i->k = n.k;
|
||||
i->flags = n.flags;
|
||||
|
||||
__btree_path_get(n.path, false);
|
||||
} else {
|
||||
bch2_path_put(trans, i->path, true);
|
||||
*i = n;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bch2_path_put(trans, i->path, true);
|
||||
*i = n;
|
||||
} else
|
||||
array_insert_item(trans->updates, trans->nr_updates,
|
||||
i - trans->updates, n);
|
||||
|
||||
__btree_path_get(n.path, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user