Commit c2d81c24 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by Kent Overstreet

bcachefs: Use struct_size()

Use struct_size() instead of hand writing it.
This is less verbose and more robust.

While at it, prepare for the coming implementation by GCC and Clang of the
__counted_by attribute. Flexible array members annotated with __counted_by
can have their accesses bounds-checked at run-time checking via
CONFIG_UBSAN_BOUNDS (for array indexing) and CONFIG_FORTIFY_SOURCE (for
strcpy/memcpy-family functions).
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 69d1f052
...@@ -163,8 +163,7 @@ int bch2_sb_disk_groups_to_cpu(struct bch_fs *c) ...@@ -163,8 +163,7 @@ int bch2_sb_disk_groups_to_cpu(struct bch_fs *c)
if (!groups) if (!groups)
return 0; return 0;
cpu_g = kzalloc(sizeof(*cpu_g) + cpu_g = kzalloc(struct_size(cpu_g, entries, nr_groups), GFP_KERNEL);
sizeof(cpu_g->entries[0]) * nr_groups, GFP_KERNEL);
if (!cpu_g) if (!cpu_g)
return -BCH_ERR_ENOMEM_disk_groups_to_cpu; return -BCH_ERR_ENOMEM_disk_groups_to_cpu;
......
...@@ -46,7 +46,7 @@ struct bch_disk_group_cpu { ...@@ -46,7 +46,7 @@ struct bch_disk_group_cpu {
struct bch_disk_groups_cpu { struct bch_disk_groups_cpu {
struct rcu_head rcu; struct rcu_head rcu;
unsigned nr; unsigned nr;
struct bch_disk_group_cpu entries[]; struct bch_disk_group_cpu entries[] __counted_by(nr);
}; };
#endif /* _BCACHEFS_SUPER_TYPES_H */ #endif /* _BCACHEFS_SUPER_TYPES_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment