On Sun, Mar 23, 2025 at 11:43 PM Malaya Kumar Rout <malayarou...@gmail.com> wrote: > > Static Analyis for bench_htab_mem.c with cppcheck:error > tools/testing/selftests/bpf/benchs/bench_htab_mem.c:284:3: > error: Resource leak: fd [resourceLeak] > tools/testing/selftests/bpf/prog_tests/sk_assign.c:41:3: > error: Resource leak: tc [resourceLeak] > > fix the issue by closing the file descriptor (fd & tc) when > read & fgets operation fails. > > Signed-off-by: Malaya Kumar Rout <malayarou...@gmail.com> > --- > tools/testing/selftests/bpf/benchs/bench_htab_mem.c | 1 + > tools/testing/selftests/bpf/prog_tests/sk_assign.c | 4 +++- > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/bpf/benchs/bench_htab_mem.c > b/tools/testing/selftests/bpf/benchs/bench_htab_mem.c > index 926ee822143e..59746fd2c23a 100644 > --- a/tools/testing/selftests/bpf/benchs/bench_htab_mem.c > +++ b/tools/testing/selftests/bpf/benchs/bench_htab_mem.c > @@ -281,6 +281,7 @@ static void htab_mem_read_mem_cgrp_file(const char *name, > unsigned long *value) > got = read(fd, buf, sizeof(buf) - 1);
It could be a bit cleaner to add close(fd) here and drop the one we have at the end of the function. pw-bot: cr > if (got <= 0) { > *value = 0; > + close(fd); > return; > } > buf[got] = 0; > diff --git a/tools/testing/selftests/bpf/prog_tests/sk_assign.c > b/tools/testing/selftests/bpf/prog_tests/sk_assign.c > index 0b9bd1d6f7cc..10a0ab954b8a 100644 > --- a/tools/testing/selftests/bpf/prog_tests/sk_assign.c > +++ b/tools/testing/selftests/bpf/prog_tests/sk_assign.c > @@ -37,8 +37,10 @@ configure_stack(void) > tc = popen("tc -V", "r"); > if (CHECK_FAIL(!tc)) > return false; > - if (CHECK_FAIL(!fgets(tc_version, sizeof(tc_version), tc))) > + if (CHECK_FAIL(!fgets(tc_version, sizeof(tc_version), tc))) { > + pclose(tc); this one looks good > return false; > + } > if (strstr(tc_version, ", libbpf ")) > prog = "test_sk_assign_libbpf.bpf.o"; > else > -- > 2.43.0 >