diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-06-10 20:21:39 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:05 +0300 |
commit | 74cc1abdbf50fcdaedf4bcf9a800c575ec44e17a (patch) | |
tree | 83ef2a86474c9a5f5038a147f7542d3db99a52ac /fs/bcachefs/reflink.c | |
parent | 224ec3e677ca82eb4216a0916ce7b04f401e90e7 (diff) | |
download | linux-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.c | 8 |
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)); |