selftests/bpf: Fix memory leak caused by not destroying skeleton
authorXu Kuohai <xukuohai@huawei.com>
Tue, 11 Oct 2022 12:01:05 +0000 (08:01 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:02 +0000 (13:32 +0100)
[ Upstream commit 6e8280b958c5d7edc514cf347a800b23b7732b2b ]

Some test cases does not destroy skeleton object correctly, causing ASAN
to report memory leak warning. Fix it.

Fixes: 0ef6740e9777 ("selftests/bpf: Add tests for kptr_ref refcounting")
Fixes: 1642a3945e22 ("selftests/bpf: Add struct argument tests with fentry/fexit programs.")
Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://lore.kernel.org/bpf/20221011120108.782373-4-xukuohai@huaweicloud.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/testing/selftests/bpf/prog_tests/map_kptr.c
tools/testing/selftests/bpf/prog_tests/tracing_struct.c

index fdcea7a..0d66b15 100644 (file)
@@ -105,7 +105,7 @@ static void test_map_kptr_success(bool test_run)
        ASSERT_OK(opts.retval, "test_map_kptr_ref2 retval");
 
        if (test_run)
-               return;
+               goto exit;
 
        ret = bpf_map__update_elem(skel->maps.array_map,
                                   &key, sizeof(key), buf, sizeof(buf), 0);
@@ -132,6 +132,7 @@ static void test_map_kptr_success(bool test_run)
        ret = bpf_map__delete_elem(skel->maps.lru_hash_map, &key, sizeof(key), 0);
        ASSERT_OK(ret, "lru_hash_map delete");
 
+exit:
        map_kptr__destroy(skel);
 }
 
index d5022b9..48dc947 100644 (file)
@@ -15,7 +15,7 @@ static void test_fentry(void)
 
        err = tracing_struct__attach(skel);
        if (!ASSERT_OK(err, "tracing_struct__attach"))
-               return;
+               goto destroy_skel;
 
        ASSERT_OK(trigger_module_test_read(256), "trigger_read");
 
@@ -54,6 +54,7 @@ static void test_fentry(void)
        ASSERT_EQ(skel->bss->t5_ret, 1, "t5 ret");
 
        tracing_struct__detach(skel);
+destroy_skel:
        tracing_struct__destroy(skel);
 }