Make sure we don't overflow BKEY_PADDED keys
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
if (k.k->u64s < BKEY_U64s)
return "u64s too small";
+ if ((btree_node_type_is_extents(type) ||
+ type == BKEY_TYPE_BTREE) &&
+ bkey_val_u64s(k.k) > BKEY_EXTENT_VAL_U64s_MAX)
+ return "value too big";
+
if (btree_node_type_is_extents(type)) {
if ((k.k->size == 0) != bkey_deleted(k.k))
return "bad size field";
const char *bch2_extent_invalid(const struct bch_fs *c, struct bkey_s_c k)
{
- if (bkey_val_u64s(k.k) > BKEY_EXTENT_VAL_U64s_MAX)
- return "value too big";
-
return bch2_bkey_ptrs_invalid(c, k);
}