summaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/btree_update_interior.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-11-11 12:42:54 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:08:46 -0400
commit6d9378f3dcd7b91effdc4ffe1da1a2e8987e9f1e (patch)
tree6b84107a03c382ffddb3a0c72ab78422db57cbcf /fs/bcachefs/btree_update_interior.h
parente648448ca562af0cb11729ce6fad0f860fa42cb4 (diff)
downloadlinux-6d9378f3dcd7b91effdc4ffe1da1a2e8987e9f1e.tar.gz
linux-6d9378f3dcd7b91effdc4ffe1da1a2e8987e9f1e.tar.bz2
linux-6d9378f3dcd7b91effdc4ffe1da1a2e8987e9f1e.zip
bcachefs: Hack around bch2_varint_decode invalid reads
bch2_varint_decode can do reads up to 7 bytes past the end ptr, for the sake of performance - these extra bytes are always masked off. This won't be a problem in practice if we make sure to burn 8 bytes in any buffer that has bkeys in it. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_update_interior.h')
-rw-r--r--fs/bcachefs/btree_update_interior.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/bcachefs/btree_update_interior.h b/fs/bcachefs/btree_update_interior.h
index 7668225e72c6..41854fc345d2 100644
--- a/fs/bcachefs/btree_update_interior.h
+++ b/fs/bcachefs/btree_update_interior.h
@@ -237,6 +237,9 @@ static inline ssize_t __bch_btree_u64s_remaining(struct bch_fs *c,
b->whiteout_u64s;
ssize_t total = c->opts.btree_node_size << 6;
+ /* Always leave one extra u64 for bch2_varint_decode: */
+ used++;
+
return total - used;
}