bcachefs: Fix two btree iterator leaks
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 21 Apr 2021 00:21:39 +0000 (20:21 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:01 +0000 (17:09 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/ec.c
fs/bcachefs/move.c

index 370f9e6916f3be1cbd71f853a268afc0beb3cc99..7d681a7254c4cdd0e322bc60f3985a409da459f4 100644 (file)
@@ -1621,6 +1621,7 @@ int bch2_stripes_write(struct bch_fs *c, unsigned flags)
                if (ret)
                        break;
        }
+       bch2_trans_iter_put(&trans, iter);
 
        bch2_trans_exit(&trans);
 
index 1c4ead7bd0bfce475a3f753e8cf98f14f8ddbdad..bce10eb4eb4c6a080765478d44360b578866e33a 100644 (file)
@@ -761,7 +761,7 @@ static int bch2_move_btree(struct bch_fs *c,
                                    id == start_btree_id ? start_pos : POS_MIN,
                                    BTREE_ITER_PREFETCH, b) {
                        if (kthread && kthread_should_stop())
-                               goto out;
+                               break;
 
                        if ((cmp_int(id, end_btree_id) ?:
                             bkey_cmp(b->key.k.p, end_pos)) > 0)
@@ -788,8 +788,10 @@ next:
                }
 
                ret = bch2_trans_iter_free(&trans, iter) ?: ret;
+               if (kthread && kthread_should_stop())
+                       break;
        }
-out:
+
        bch2_trans_exit(&trans);
 
        if (ret)