From: Yun Lu <[email protected]>
bpf_map__reuse_fd() duplicates the supplied file descriptor instead of
taking ownership of it. test_failure_map_no_btf() closes the original
map_fd only when reuse fails, leaking it when reuse succeeds, including
when the test passes. Destroying the skeleton closes its own descriptor
but leaves the original descriptor and its map reference alive.
Close map_fd immediately after bpf_map__reuse_fd(), before checking its
return value, to release the original descriptor on both success and
failure. The skeleton retains its own descriptor for the subsequent
program load.
Fixes: bca2b74ea9a8 ("selftests/bpf: Add more bpf_wq tests")
Reported-by: Jackie Liu <[email protected]>
Signed-off-by: Yun Lu <[email protected]>
---
tools/testing/selftests/bpf/prog_tests/wq.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/wq.c
b/tools/testing/selftests/bpf/prog_tests/wq.c
index 84831eecc935..97926e35aaf2 100644
--- a/tools/testing/selftests/bpf/prog_tests/wq.c
+++ b/tools/testing/selftests/bpf/prog_tests/wq.c
@@ -64,10 +64,9 @@ static void test_failure_map_no_btf(void)
goto out;
err = bpf_map__reuse_fd(skel->maps.array, map_fd);
- if (!ASSERT_OK(err, "map reuse fd")) {
- close(map_fd);
+ close(map_fd);
+ if (!ASSERT_OK(err, "map reuse fd"))
goto out;
- }
insns = bpf_program__insns(skel->progs.test_map_no_btf);
if (!ASSERT_OK_PTR(insns, "insns ptr"))
base-commit: 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907
--
2.43.0