]> Git Repo - linux.git/commitdiff
bcachefs: Fix error path in check_dirent_inode_dirent()
authorKent Overstreet <[email protected]>
Mon, 23 Sep 2024 22:41:46 +0000 (18:41 -0400)
committerKent Overstreet <[email protected]>
Sat, 28 Sep 2024 01:46:34 +0000 (21:46 -0400)
fsck_err() jumps to the fsck_err label when bailing out; need to make
sure bp_iter was initialized...

Signed-off-by: Kent Overstreet <[email protected]>
fs/bcachefs/fsck.c

index 89129548aebb68c76d4244f64af222c95e6e2f10..3508f8b5f06e366f74944ab8c6689a32def99418 100644 (file)
@@ -1758,6 +1758,7 @@ static int check_dirent_inode_dirent(struct btree_trans *trans,
 {
        struct bch_fs *c = trans->c;
        struct printbuf buf = PRINTBUF;
+       struct btree_iter bp_iter = { NULL };
        int ret = 0;
 
        if (inode_points_to_dirent(target, d))
@@ -1770,7 +1771,7 @@ static int check_dirent_inode_dirent(struct btree_trans *trans,
                       prt_printf(&buf, "\n  "),
                       bch2_inode_unpacked_to_text(&buf, target),
                       buf.buf)))
-               goto out_noiter;
+               goto err;
 
        if (!target->bi_dir &&
            !target->bi_dir_offset) {
@@ -1779,7 +1780,6 @@ static int check_dirent_inode_dirent(struct btree_trans *trans,
                return __bch2_fsck_write_inode(trans, target, target_snapshot);
        }
 
-       struct btree_iter bp_iter = { NULL };
        struct bkey_s_c_dirent bp_dirent = dirent_get_by_pos(trans, &bp_iter,
                              SPOS(target->bi_dir, target->bi_dir_offset, target_snapshot));
        ret = bkey_err(bp_dirent);
@@ -1840,7 +1840,6 @@ out:
 err:
 fsck_err:
        bch2_trans_iter_exit(trans, &bp_iter);
-out_noiter:
        printbuf_exit(&buf);
        bch_err_fn(c, ret);
        return ret;
This page took 0.088231 seconds and 4 git commands to generate.