bcachefs: Fix a btree transaction iter overflow
authorKent Overstreet <kent.overstreet@gmail.com>
Fri, 13 Nov 2020 23:30:53 +0000 (18:30 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:47 +0000 (17:08 -0400)
extent_replay_key dates from before putting iterators was required -
fixed.

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

index 1745cfac6b26aef400984100b5d82193dec1ad88..6750063663b5f888e39b77f3b514ce3ef12b0975 100644 (file)
@@ -456,6 +456,7 @@ retry:
                __bch2_btree_iter_set_pos(split_iter, split->k.p, false);
                bch2_trans_update(&trans, split_iter, split,
                                  BTREE_TRIGGER_NORUN);
+               bch2_trans_iter_put(&trans, split_iter);
 
                bch2_btree_iter_set_pos(iter, split->k.p);
 
@@ -481,6 +482,8 @@ retry:
                                BTREE_INSERT_LAZY_RW|
                                BTREE_INSERT_JOURNAL_REPLAY);
 err:
+       bch2_trans_iter_put(&trans, iter);
+
        if (ret == -EINTR)
                goto retry;