[PATCH v2 -next] selftests/bpf: Use ARRAY_SIZE for array length

Jiapeng Chong posted 1 patch 2 months ago
tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
[PATCH v2 -next] selftests/bpf: Use ARRAY_SIZE for array length
Posted by Jiapeng Chong 2 months ago
Use of macro ARRAY_SIZE to calculate array size minimizes
the redundant code and improves code reusability.

./tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c:98:34-35: WARNING: Use ARRAY_SIZE.
./tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c:93:29-30: WARNING: Use ARRAY_SIZE.
./tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c:101:34-35: WARNING: Use ARRAY_SIZE.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=11167
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
---
Changes in v2:
  -Modify the header file "kselftest.h" to "linux/kernel.h".

 tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c b/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c
index a18d3680fb16..7534014279ca 100644
--- a/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c
+++ b/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c
@@ -7,6 +7,7 @@
 #include <sys/syscall.h>
 #include <bpf/libbpf.h>
 #include <bpf/btf.h>
+#include <linux/kernel.h>
 
 #include "test_progs.h"
 #include "test_btf.h"
@@ -90,15 +91,15 @@ static void test_bad_local_id(void)
 	attr.prog_type = BPF_TRACE_RAW_TP;
 	attr.license = (__u64)"GPL";
 	attr.insns = (__u64)&insns;
-	attr.insn_cnt = sizeof(insns) / sizeof(*insns);
+	attr.insn_cnt = ARRAY_SIZE(insns);
 	attr.log_buf = (__u64)log;
 	attr.log_size = sizeof(log);
 	attr.log_level = log_level;
 	attr.func_info = (__u64)funcs;
-	attr.func_info_cnt = sizeof(funcs) / sizeof(*funcs);
+	attr.func_info_cnt = ARRAY_SIZE(funcs);
 	attr.func_info_rec_size = sizeof(*funcs);
 	attr.core_relos = (__u64)relos;
-	attr.core_relo_cnt = sizeof(relos) / sizeof(*relos);
+	attr.core_relo_cnt = ARRAY_SIZE(relos);
 	attr.core_relo_rec_size = sizeof(*relos);
 	prog_fd = sys_bpf_prog_load(&attr, sizeof(attr), 1);
 	saved_errno = errno;
-- 
2.32.0.3.g01195cf9f
Re: [PATCH v2 -next] selftests/bpf: Use ARRAY_SIZE for array length
Posted by Tony Ambardar 1 month, 4 weeks ago
On Sun, Sep 29, 2024 at 05:28:11PM +0800, Jiapeng Chong wrote:
> Use of macro ARRAY_SIZE to calculate array size minimizes
> the redundant code and improves code reusability.
> 
> ./tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c:98:34-35: WARNING: Use ARRAY_SIZE.
> ./tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c:93:29-30: WARNING: Use ARRAY_SIZE.
> ./tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c:101:34-35: WARNING: Use ARRAY_SIZE.
> 
> Reported-by: Abaci Robot <abaci@linux.alibaba.com>
> Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=11167
> Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
> ---
> Changes in v2:
>   -Modify the header file "kselftest.h" to "linux/kernel.h".
> 
>  tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c b/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c
> index a18d3680fb16..7534014279ca 100644
> --- a/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c
> +++ b/tools/testing/selftests/bpf/prog_tests/core_reloc_raw.c
> @@ -7,6 +7,7 @@
>  #include <sys/syscall.h>
>  #include <bpf/libbpf.h>
>  #include <bpf/btf.h>
> +#include <linux/kernel.h>

Hi Jiapeng,

I don't believe adding this header is needed, since ARRAY_SIZE is defined
in bpf_utils.h and already pulled in by test_progs.h below. Maybe try
without "#include <linux/kernel.h"> to check?

Take care,
Tony

>  
>  #include "test_progs.h"
>  #include "test_btf.h"
> @@ -90,15 +91,15 @@ static void test_bad_local_id(void)
>  	attr.prog_type = BPF_TRACE_RAW_TP;
>  	attr.license = (__u64)"GPL";
>  	attr.insns = (__u64)&insns;
> -	attr.insn_cnt = sizeof(insns) / sizeof(*insns);
> +	attr.insn_cnt = ARRAY_SIZE(insns);
>  	attr.log_buf = (__u64)log;
>  	attr.log_size = sizeof(log);
>  	attr.log_level = log_level;
>  	attr.func_info = (__u64)funcs;
> -	attr.func_info_cnt = sizeof(funcs) / sizeof(*funcs);
> +	attr.func_info_cnt = ARRAY_SIZE(funcs);
>  	attr.func_info_rec_size = sizeof(*funcs);
>  	attr.core_relos = (__u64)relos;
> -	attr.core_relo_cnt = sizeof(relos) / sizeof(*relos);
> +	attr.core_relo_cnt = ARRAY_SIZE(relos);
>  	attr.core_relo_rec_size = sizeof(*relos);
>  	prog_fd = sys_bpf_prog_load(&attr, sizeof(attr), 1);
>  	saved_errno = errno;
> -- 
> 2.32.0.3.g01195cf9f
>