[PATCH] selftests/bpf: fix array_size.cocci warning:

Subsystems: bpf [general] (safe dynamic programs and tools), bpf [selftests] (test runners & infrastructure), kernel selftest framework, the rest

STALE1730d

3 messages, 2 authors, 2021-11-18 · open the first message on its own page

[PATCH] selftests/bpf: fix array_size.cocci warning:

From: Guo Zhengkui <hidden>
Date: 2021-11-17 13:21:24

Use ARRAY_SIZE() because it uses __must_be_array(arr) to make sure
arr is really an array.

Signed-off-by: Guo Zhengkui <redacted>
---
 .../testing/selftests/bpf/prog_tests/cgroup_attach_override.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c
index 356547e849e2..1921c5040d8c 100644
--- a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c
+++ b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 
+#include <linux/kernel.h>
 #include <test_progs.h>
 
 #include "cgroup_helpers.h"
@@ -16,10 +17,9 @@ static int prog_load(int verdict)
 		BPF_MOV64_IMM(BPF_REG_0, verdict), /* r0 = verdict */
 		BPF_EXIT_INSN(),
 	};
-	size_t insns_cnt = sizeof(prog) / sizeof(struct bpf_insn);
 
 	return bpf_test_load_program(BPF_PROG_TYPE_CGROUP_SKB,
-			       prog, insns_cnt, "GPL", 0,
+			       prog, ARRAY_SIZE(prog), "GPL", 0,
 			       bpf_log_buf, BPF_LOG_BUF_SIZE);
 }
 
-- 
2.20.1

Re: [PATCH] selftests/bpf: fix array_size.cocci warning:

From: Daniel Borkmann <daniel@iogearbox.net>
Date: 2021-11-17 22:42:16

On 11/17/21 2:20 PM, Guo Zhengkui wrote:
quoted hunk
Use ARRAY_SIZE() because it uses __must_be_array(arr) to make sure
arr is really an array.

Signed-off-by: Guo Zhengkui <redacted>
---
  .../testing/selftests/bpf/prog_tests/cgroup_attach_override.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c
index 356547e849e2..1921c5040d8c 100644
--- a/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c
+++ b/tools/testing/selftests/bpf/prog_tests/cgroup_attach_override.c
@@ -1,5 +1,6 @@
  // SPDX-License-Identifier: GPL-2.0
  
+#include <linux/kernel.h>
  #include <test_progs.h>
No need for the extra include. test_progs.h already includes bpf_util.h, please check
such trivialities before submission. Simple grep would have revealed use of ARRAY_SIZE()
in various places under tools/testing/selftests/bpf/prog_tests/.
quoted hunk
  #include "cgroup_helpers.h"
@@ -16,10 +17,9 @@ static int prog_load(int verdict)
  		BPF_MOV64_IMM(BPF_REG_0, verdict), /* r0 = verdict */
  		BPF_EXIT_INSN(),
  	};
-	size_t insns_cnt = sizeof(prog) / sizeof(struct bpf_insn);
  
  	return bpf_test_load_program(BPF_PROG_TYPE_CGROUP_SKB,
-			       prog, insns_cnt, "GPL", 0,
+			       prog, ARRAY_SIZE(prog), "GPL", 0,
  			       bpf_log_buf, BPF_LOG_BUF_SIZE);
There are many more similar occurrences. Please just send one cleanup patch to reduce
churn in the git log.

Thanks,
Daniel

Re: [PATCH] selftests/bpf: fix array_size.cocci warning

From: Guo Zhengkui <hidden>
Date: 2021-11-18 07:12:55

No need for the extra include. test_progs.h already includes bpf_util.h, please check
such trivialities before submission. Simple grep would have revealed use of ARRAY_SIZE()
in various places under tools/testing/selftests/bpf/prog_tests/.
Actually, ARRAY_SIZE() in ./include/linux/kernel.h is diffrent from the one defined in bpf_util.h:

./include/linux/kernel.h
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))

./tools/testing/selftests/bpf/bpf_util.h
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))

__must_be_array() ensures arr is an array, which is better than the one defined in bpf_util.h
here are many more similar occurrences. Please just send one cleanup patch to reduce churn in the git log.
Yes, I will commit another patch.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help