From: Kent Overstreet Date: Sat, 13 Nov 2021 17:57:00 +0000 (-0500) Subject: bcachefs: Fix an exiting of uninitialized iterator X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=496b7238794ac9209c68fba3592b59576140fa55;p=linux.git bcachefs: Fix an exiting of uninitialized iterator bch2_dirent_lookup had an error path where we'd exit a btree_iter that hadn't been properly initialized. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/dirent.c b/fs/bcachefs/dirent.c index 9267eea810f8b..5db1426faaf31 100644 --- a/fs/bcachefs/dirent.c +++ b/fs/bcachefs/dirent.c @@ -418,16 +418,15 @@ int __bch2_dirent_lookup_trans(struct btree_trans *trans, k = bch2_btree_iter_peek_slot(iter); ret = bkey_err(k); - if (ret) { - bch2_trans_iter_exit(trans, iter); - return ret; - } + if (ret) + goto err; d = bkey_s_c_to_dirent(k); ret = bch2_dirent_read_target(trans, dir, d, inum); if (ret > 0) ret = -ENOENT; +err: if (ret) bch2_trans_iter_exit(trans, iter); @@ -448,10 +447,10 @@ retry: ret = __bch2_dirent_lookup_trans(&trans, &iter, dir, hash_info, name, inum, 0); - - bch2_trans_iter_exit(&trans, &iter); if (ret == -EINTR) goto retry; + if (!ret) + bch2_trans_iter_exit(&trans, &iter); bch2_trans_exit(&trans); return ret; }