diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-12-09 15:21:26 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-12-25 17:37:11 -0500 |
commit | ffb3f4ded352461588b4dabc1e0546aa378b756a (patch) | |
tree | 1b3de44f9342013df22435ee5efc9510d3234b7d | |
parent | f30a3668fa1fad302ff0274da416d7dbd10d0da9 (diff) |
bcachefs: Fix null ptr deref in fsck_inode_rm()
bch2_btree_delete_range() can split compressed extents, thus needs to
pass in a disk reservation when we're operating on extents btrees.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/btree_update_leaf.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c index 10837a62f01c..295942e7356e 100644 --- a/fs/bcachefs/btree_update_leaf.c +++ b/fs/bcachefs/btree_update_leaf.c @@ -1440,6 +1440,8 @@ retry: (k = bch2_btree_iter_peek(&iter)).k) && !(ret = bkey_err(k)) && bkey_cmp(iter.pos, end) < 0) { + struct disk_reservation disk_res = + bch2_disk_reservation_init(trans->c, 0); struct bkey_i delete; bkey_init(&delete.k); @@ -1474,8 +1476,9 @@ retry: } ret = bch2_trans_update(trans, &iter, &delete, 0) ?: - bch2_trans_commit(trans, NULL, journal_seq, + bch2_trans_commit(trans, &disk_res, journal_seq, BTREE_INSERT_NOFAIL); + bch2_disk_reservation_put(trans->c, &disk_res); if (ret) break; } |