From 2e8f9d23cbc75a1d45506186da8c7a5c1605b622 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 17 May 2021 00:08:06 -0400 Subject: [PATCH] bcachefs: Make sure to pass a disk reservation to bch2_extent_update() It's needed when we split an existing compressed extent - we get a null ptr deref without it. Signed-off-by: Kent Overstreet --- fs/bcachefs/reflink.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fs/bcachefs/reflink.c b/fs/bcachefs/reflink.c index 0978ad92614c6..405a194d10e5d 100644 --- a/fs/bcachefs/reflink.c +++ b/fs/bcachefs/reflink.c @@ -2,6 +2,7 @@ #include "bcachefs.h" #include "bkey_buf.h" #include "btree_update.h" +#include "buckets.h" #include "extents.h" #include "inode.h" #include "io.h" @@ -224,6 +225,8 @@ s64 bch2_remap_range(struct bch_fs *c, BTREE_ITER_INTENT); while (ret == 0 || ret == -EINTR) { + struct disk_reservation disk_res = { 0 }; + bch2_trans_begin(&trans); if (fatal_signal_pending(current)) { @@ -287,8 +290,9 @@ s64 bch2_remap_range(struct bch_fs *c, dst_end.offset - dst_iter->pos.offset)); ret = bch2_extent_update(&trans, dst_iter, new_dst.k, - NULL, journal_seq, + &disk_res, journal_seq, new_i_size, i_sectors_delta); + bch2_disk_reservation_put(c, &disk_res); if (ret) continue; -- 2.30.2