diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c index 7c9437d..9d9b6b5 100644 --- a/tools/perf/tests/code-reading.c +++ b/tools/perf/tests/code-reading.c @@ -357,7 +357,7 @@ static int do_test_code_reading(void) ret = machine__create_kernel_maps(machine); if (ret < 0) { pr_debug("machine__create_kernel_maps failed\n"); - goto out_err; + goto out_machine_exit; } /* Load kernel map */ @@ -365,7 +365,7 @@ static int do_test_code_reading(void) ret = map__load(map, NULL); if (ret < 0) { pr_debug("map__load failed\n"); - goto out_err; + goto out_destroy_kernel_maps; } have_vmlinux = map->dso->symtab_type == DSO_BINARY_TYPE__VMLINUX; /* No point getting kernel events if there is no vmlinux */ @@ -375,26 +375,26 @@ static int do_test_code_reading(void) threads = thread_map__new_by_tid(pid); if (!threads) { pr_debug("thread_map__new_by_tid failed\n"); - goto out_err; + goto out_destroy_kernel_maps; } ret = perf_event__synthesize_thread_map(NULL, threads, perf_event__process, machine); if (ret < 0) { pr_debug("perf_event__synthesize_thread_map failed\n"); - goto out_err; + goto out_thread_map_delete; } thread = machine__findnew_thread(machine, pid); if (!thread) { pr_debug("machine__findnew_thread failed\n"); - goto out_err; + goto out_thread_map_delete; } cpus = cpu_map__new(NULL); if (!cpus) { pr_debug("cpu_map__new failed\n"); - goto out_err; + goto out_thread_map_delete; } while (1) { @@ -403,7 +403,7 @@ static int do_test_code_reading(void) evlist = perf_evlist__new(); if (!evlist) { pr_debug("perf_evlist__new failed\n"); - goto out_err; + goto out_cpu_map_delete; } perf_evlist__set_maps(evlist, cpus, threads); @@ -416,7 +416,7 @@ static int do_test_code_reading(void) ret = parse_events(evlist, str); if (ret < 0) { pr_debug("parse_events failed\n"); - goto out_err; + goto out_evlist_delete; } perf_evlist__config(evlist, &opts); @@ -435,7 +435,7 @@ static int do_test_code_reading(void) continue; } pr_debug("perf_evlist__open failed\n"); - goto out_err; + goto out_evlist_delete; } break; } @@ -443,7 +443,7 @@ static int do_test_code_reading(void) ret = perf_evlist__mmap(evlist, UINT_MAX, false); if (ret < 0) { pr_debug("perf_evlist__mmap failed\n"); - goto out_err; + goto out_evlist_close; } perf_evlist__enable(evlist); @@ -454,7 +454,7 @@ static int do_test_code_reading(void) ret = process_events(machine, evlist); if (ret < 0) - goto out_err; + goto out_evlist_munmap; if (!have_vmlinux) err = TEST_CODE_READING_NO_VMLINUX; @@ -462,19 +462,21 @@ static int do_test_code_reading(void) err = TEST_CODE_READING_NO_ACCESS; else err = TEST_CODE_READING_OK; -out_err: - if (evlist) { - perf_evlist__disable(evlist); - perf_evlist__munmap(evlist); - perf_evlist__close(evlist); - perf_evlist__delete(evlist); - } - if (cpus) - cpu_map__delete(cpus); - if (threads) - thread_map__delete(threads); + +out_evlist_munmap: + perf_evlist__munmap(evlist); +out_evlist_close: + perf_evlist__close(evlist); +out_evlist_delete: + perf_evlist__delete(evlist); +out_cpu_map_delete: + cpu_map__delete(cpus); +out_thread_map_delete: + thread_map__delete(threads); +out_destroy_kernel_maps: machines__destroy_kernel_maps(&machines); machine__delete_threads(machine); +out_machine_exit: machines__exit(&machines); return err;