OSDN Git Service

selftests/bpf: Clean up btf and btf_dump in dump_datasec test
authorAndrii Nakryiko <andrii@kernel.org>
Sun, 7 Nov 2021 16:55:18 +0000 (08:55 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 7 Nov 2021 17:14:15 +0000 (09:14 -0800)
Free up used resources at the end and on error. Also make it more
obvious that there is btf__parse() call that creates struct btf
instance.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Reviewed-by: Hengqi Chen <hengqi.chen@gmail.com>
Link: https://lore.kernel.org/bpf/20211107165521.9240-7-andrii@kernel.org
tools/testing/selftests/bpf/prog_tests/btf_dump.c

index aa76360..a049619 100644 (file)
@@ -814,21 +814,25 @@ static void test_btf_datasec(struct btf *btf, struct btf_dump *d, char *str,
 
 static void test_btf_dump_datasec_data(char *str)
 {
-       struct btf *btf = btf__parse("xdping_kern.o", NULL);
+       struct btf *btf;
        struct btf_dump_opts opts = { .ctx = str };
        char license[4] = "GPL";
        struct btf_dump *d;
 
+       btf = btf__parse("xdping_kern.o", NULL);
        if (!ASSERT_OK_PTR(btf, "xdping_kern.o BTF not found"))
                return;
 
        d = btf_dump__new(btf, NULL, &opts, btf_dump_snprintf);
        if (!ASSERT_OK_PTR(d, "could not create BTF dump"))
-               return;
+               goto out;
 
        test_btf_datasec(btf, d, str, "license",
                         "SEC(\"license\") char[4] _license = (char[4])['G','P','L',];",
                         license, sizeof(license));
+out:
+       btf_dump__free(d);
+       btf__free(btf);
 }
 
 void test_btf_dump() {