]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
bcachefs: Fix error path in bch2_snapshot_set_equiv()
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 28 Mar 2022 20:31:26 +0000 (16:31 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:28 +0000 (17:09 -0400)
We weren't properly catching errors from snapshot_live() - oops.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/subvolume.c

index 2c5f7e7793a736c06823623db44472bbf0c237a1..20c6b21e54d3be64e116278de01a751cdae47553 100644 (file)
@@ -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)