summaryrefslogtreecommitdiff
path: root/fs/bcachefs/reflink.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-06-10 20:21:39 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:09:05 +0300
commit74cc1abdbf50fcdaedf4bcf9a800c575ec44e17a (patch)
tree83ef2a86474c9a5f5038a147f7542d3db99a52ac /fs/bcachefs/reflink.c
parent224ec3e677ca82eb4216a0916ce7b04f401e90e7 (diff)
downloadlinux-74cc1abdbf50fcdaedf4bcf9a800c575ec44e17a.tar.xz
bcachefs: Fix a buffer overrun
In make_extent_indirect(), we were allocating too small of a buffer for the new indirect extent. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/reflink.c')
-rw-r--r--fs/bcachefs/reflink.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/fs/bcachefs/reflink.c b/fs/bcachefs/reflink.c
index a420729288d4..6aa37726341d 100644
--- a/fs/bcachefs/reflink.c
+++ b/fs/bcachefs/reflink.c
@@ -138,7 +138,7 @@ static int bch2_make_extent_indirect(struct btree_trans *trans,
/* rewind iter to start of hole, if necessary: */
bch2_btree_iter_set_pos(reflink_iter, bkey_start_pos(k.k));
- r_v = bch2_trans_kmalloc(trans, sizeof(__le64) + bkey_val_bytes(&orig->k));
+ r_v = bch2_trans_kmalloc(trans, sizeof(__le64) + bkey_bytes(&orig->k));
ret = PTR_ERR_OR_ZERO(r_v);
if (ret)
goto err;
@@ -159,12 +159,6 @@ static int bch2_make_extent_indirect(struct btree_trans *trans,
if (ret)
goto err;
- r_p = bch2_trans_kmalloc(trans, sizeof(*r_p));
- if (IS_ERR(r_p)) {
- ret = PTR_ERR(r_p);
- goto err;
- }
-
orig->k.type = KEY_TYPE_reflink_p;
r_p = bkey_i_to_reflink_p(orig);
set_bkey_val_bytes(&r_p->k, sizeof(r_p->v));