From: Kent Overstreet Date: Mon, 28 Mar 2022 20:31:26 +0000 (-0400) Subject: bcachefs: Fix error path in bch2_snapshot_set_equiv() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=81cdc8f3070561786a906c66d697666e6a3319b9;p=users%2Fjedix%2Flinux-maple.git bcachefs: Fix error path in bch2_snapshot_set_equiv() We weren't properly catching errors from snapshot_live() - oops. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/subvolume.c b/fs/bcachefs/subvolume.c index 2c5f7e7793a7..20c6b21e54d3 100644 --- a/fs/bcachefs/subvolume.c +++ b/fs/bcachefs/subvolume.c @@ -139,7 +139,7 @@ static int bch2_snapshots_set_equiv(struct btree_trans *trans) for_each_btree_key(trans, iter, BTREE_ID_snapshots, POS_MIN, 0, k, ret) { u32 id = k.k->p.offset, child[2]; - unsigned nr_live = 0, live_idx; + unsigned nr_live = 0, live_idx = 0; if (k.k->type != KEY_TYPE_snapshot) continue; @@ -151,7 +151,7 @@ static int bch2_snapshots_set_equiv(struct btree_trans *trans) for (i = 0; i < 2; i++) { ret = snapshot_live(trans, child[i]); if (ret < 0) - break; + goto err; if (ret) live_idx = i; @@ -162,6 +162,7 @@ static int bch2_snapshots_set_equiv(struct btree_trans *trans) ? snapshot_t(c, child[live_idx])->equiv : id; } +err: bch2_trans_iter_exit(trans, &iter); if (ret)