summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-04-17 02:17:21 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2024-04-17 17:29:58 -0400
commit719aec84b106ba3bd3639eddb2be46c510ef683a (patch)
tree91dfdd0a1723c59b980f170bbf8fd493687170a1 /fs
parent605109ff5e43addefdf92d1cfa2a693114430024 (diff)
downloadlinux-stable-719aec84b106ba3bd3639eddb2be46c510ef683a.tar.gz
linux-stable-719aec84b106ba3bd3639eddb2be46c510ef683a.tar.bz2
linux-stable-719aec84b106ba3bd3639eddb2be46c510ef683a.zip
bcachefs: fix leak in bch2_gc_write_reflink_key
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs')
-rw-r--r--fs/bcachefs/btree_gc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_gc.c b/fs/bcachefs/btree_gc.c
index ecbd9598f69f..791470b0c654 100644
--- a/fs/bcachefs/btree_gc.c
+++ b/fs/bcachefs/btree_gc.c
@@ -1587,7 +1587,7 @@ static int bch2_gc_write_reflink_key(struct btree_trans *trans,
struct bkey_i *new = bch2_bkey_make_mut_noupdate(trans, k);
ret = PTR_ERR_OR_ZERO(new);
if (ret)
- return ret;
+ goto out;
if (!r->refcount)
new->k.type = KEY_TYPE_deleted;
@@ -1595,6 +1595,7 @@ static int bch2_gc_write_reflink_key(struct btree_trans *trans,
*bkey_refcount(bkey_i_to_s(new)) = cpu_to_le64(r->refcount);
ret = bch2_trans_update(trans, iter, new, 0);
}
+out:
fsck_err:
printbuf_exit(&buf);
return ret;