]> git.dujemihanovic.xyz Git - linux.git/commitdiff
bpf: Use struct_size()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 29 Apr 2024 12:13:22 +0000 (15:13 +0300)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 29 Apr 2024 23:12:03 +0000 (16:12 -0700)
Use struct_size() instead of hand writing it.
This is less verbose and more robust.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/bpf/20240429121323.3818497-1-andriy.shevchenko@linux.intel.com
kernel/bpf/core.c

index 95c7fd093e556b8ce7913528d6c52cb900e45ed0..a8ca6dd6e614be55f3840bff1bf25801d913cc87 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/bpf.h>
 #include <linux/btf.h>
 #include <linux/objtool.h>
+#include <linux/overflow.h>
 #include <linux/rbtree_latch.h>
 #include <linux/kallsyms.h>
 #include <linux/rcupdate.h>
@@ -2455,13 +2456,14 @@ EXPORT_SYMBOL(bpf_empty_prog_array);
 
 struct bpf_prog_array *bpf_prog_array_alloc(u32 prog_cnt, gfp_t flags)
 {
+       struct bpf_prog_array *p;
+
        if (prog_cnt)
-               return kzalloc(sizeof(struct bpf_prog_array) +
-                              sizeof(struct bpf_prog_array_item) *
-                              (prog_cnt + 1),
-                              flags);
+               p = kzalloc(struct_size(p, items, prog_cnt + 1), flags);
+       else
+               p = &bpf_empty_prog_array.hdr;
 
-       return &bpf_empty_prog_array.hdr;
+       return p;
 }
 
 void bpf_prog_array_free(struct bpf_prog_array *progs)