selftests/bpf: Free per-cpu values array in bpf_iter selftest
authorAndrii Nakryiko <andrii@kernel.org>
Sun, 7 Nov 2021 16:55:16 +0000 (08:55 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 7 Nov 2021 17:14:15 +0000 (09:14 -0800)
Array holding per-cpu values wasn't freed. Fix that.

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211107165521.9240-5-andrii@kernel.org
tools/testing/selftests/bpf/prog_tests/bpf_iter.c

index 9454331..3e10abc 100644 (file)
@@ -699,14 +699,13 @@ static void test_bpf_percpu_hash_map(void)
        char buf[64];
        void *val;
 
-       val = malloc(8 * bpf_num_possible_cpus());
-
        skel = bpf_iter_bpf_percpu_hash_map__open();
        if (CHECK(!skel, "bpf_iter_bpf_percpu_hash_map__open",
                  "skeleton open failed\n"))
                return;
 
        skel->rodata->num_cpus = bpf_num_possible_cpus();
+       val = malloc(8 * bpf_num_possible_cpus());
 
        err = bpf_iter_bpf_percpu_hash_map__load(skel);
        if (CHECK(!skel, "bpf_iter_bpf_percpu_hash_map__load",
@@ -770,6 +769,7 @@ free_link:
        bpf_link__destroy(link);
 out:
        bpf_iter_bpf_percpu_hash_map__destroy(skel);
+       free(val);
 }
 
 static void test_bpf_array_map(void)
@@ -870,14 +870,13 @@ static void test_bpf_percpu_array_map(void)
        void *val;
        int len;
 
-       val = malloc(8 * bpf_num_possible_cpus());
-
        skel = bpf_iter_bpf_percpu_array_map__open();
        if (CHECK(!skel, "bpf_iter_bpf_percpu_array_map__open",
                  "skeleton open failed\n"))
                return;
 
        skel->rodata->num_cpus = bpf_num_possible_cpus();
+       val = malloc(8 * bpf_num_possible_cpus());
 
        err = bpf_iter_bpf_percpu_array_map__load(skel);
        if (CHECK(!skel, "bpf_iter_bpf_percpu_array_map__load",
@@ -933,6 +932,7 @@ free_link:
        bpf_link__destroy(link);
 out:
        bpf_iter_bpf_percpu_array_map__destroy(skel);
+       free(val);
 }
 
 /* An iterator program deletes all local storage in a map. */