]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Fix null ptr deref in fsck_inode_rm()
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 9 Dec 2021 20:21:26 +0000 (15:21 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:18 +0000 (17:09 -0400)
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>
fs/bcachefs/btree_update_leaf.c

index 1079daef4e862988c798cb04cc37e0b7d89dadbc..96fc2cd13f21938e689a5e4cc2210ca6538331e6 100644 (file)
@@ -1452,6 +1452,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);
@@ -1486,8 +1488,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;
        }