From: Kent Overstreet Date: Sat, 20 Mar 2021 00:40:31 +0000 (-0400) Subject: bcachefs: Assert that iterators aren't being double freed X-Git-Tag: v6.7-rc1~201^2~1732 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e9895f0ab950c0f37f9bb8ad7117f2abb2590411;p=thirdparty%2Fkernel%2Flinux.git bcachefs: Assert that iterators aren't being double freed Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 00140ae50cb93..6e860d47da4fd 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -1956,6 +1956,7 @@ int bch2_trans_iter_put(struct btree_trans *trans, return 0; BUG_ON(trans->iters + iter->idx != iter); + BUG_ON(!btree_iter_live(trans, iter)); ret = btree_iter_err(iter); diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index 7bf2fded816ff..df839021fd3d2 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -1500,6 +1500,10 @@ static struct btree_iter *trans_get_update(struct btree_trans *trans, bkey_cmp(pos, i->k->k.p) < 0 : !bkey_cmp(pos, i->iter->pos))) { *k = bkey_i_to_s_c(i->k); + + /* ugly hack.. */ + BUG_ON(btree_iter_live(trans, i->iter)); + trans->iters_live |= 1ULL << i->iter->idx; return i->iter; }