]> git.itanic.dy.fi Git - linux-stable/commitdiff
bcachefs: Use struct_size()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 1 Oct 2023 07:13:54 +0000 (09:13 +0200)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:16 +0000 (17:10 -0400)
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: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/disk_groups.c
fs/bcachefs/super_types.h

index 43aad8ba8cc970794dc57a2b548b279667923615..3c8aa69b67ea6f237975ee4b861ea605ec9b9ff1 100644 (file)
@@ -163,8 +163,7 @@ int bch2_sb_disk_groups_to_cpu(struct bch_fs *c)
        if (!groups)
                return 0;
 
-       cpu_g = kzalloc(sizeof(*cpu_g) +
-                       sizeof(cpu_g->entries[0]) * nr_groups, GFP_KERNEL);
+       cpu_g = kzalloc(struct_size(cpu_g, entries, nr_groups), GFP_KERNEL);
        if (!cpu_g)
                return -BCH_ERR_ENOMEM_disk_groups_to_cpu;
 
index 597a8db73585b8ad2793c59e1fa6668dfe3f87e5..78d6138db62d7e4a1f1fe07bb043ca7ada417986 100644 (file)
@@ -46,7 +46,7 @@ struct bch_disk_group_cpu {
 struct bch_disk_groups_cpu {
        struct rcu_head                 rcu;
        unsigned                        nr;
-       struct bch_disk_group_cpu       entries[];
+       struct bch_disk_group_cpu       entries[] __counted_by(nr);
 };
 
 #endif /* _BCACHEFS_SUPER_TYPES_H */