diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-26 15:41:15 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-27 13:17:00 -0500 |
commit | 046625231a0397f1776eb353a4ec9ff142cd2f6b (patch) | |
tree | 6ce7ab043539d2432b135bc61f39febb3a032039 /tools | |
parent | f5385650c02cd4373c4124c8a8fac3b5f9851e7f (diff) |
perf tools: Introduce zfree
For the frequent idiom of:
free(ptr);
ptr = NULL;
Make it expect a pointer to the pointer being freed, so that it becomes
clear at first sight that the variable being freed is being modified.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-pfw02ezuab37kha18wlut7ir@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/arch/common.c | 3 | ||||
-rw-r--r-- | tools/perf/builtin-annotate.c | 3 | ||||
-rw-r--r-- | tools/perf/builtin-stat.c | 6 | ||||
-rw-r--r-- | tools/perf/builtin-timechart.c | 3 | ||||
-rw-r--r-- | tools/perf/builtin-trace.c | 12 | ||||
-rw-r--r-- | tools/perf/ui/browser.c | 6 | ||||
-rw-r--r-- | tools/perf/ui/browsers/hists.c | 6 | ||||
-rw-r--r-- | tools/perf/ui/gtk/util.c | 3 | ||||
-rw-r--r-- | tools/perf/util/alias.c | 6 | ||||
-rw-r--r-- | tools/perf/util/annotate.c | 12 | ||||
-rw-r--r-- | tools/perf/util/dso.c | 9 | ||||
-rw-r--r-- | tools/perf/util/evlist.c | 9 | ||||
-rw-r--r-- | tools/perf/util/evsel.c | 6 | ||||
-rw-r--r-- | tools/perf/util/header.c | 3 | ||||
-rw-r--r-- | tools/perf/util/help.c | 3 | ||||
-rw-r--r-- | tools/perf/util/machine.c | 12 | ||||
-rw-r--r-- | tools/perf/util/probe-event.c | 6 | ||||
-rw-r--r-- | tools/perf/util/probe-finder.c | 24 | ||||
-rw-r--r-- | tools/perf/util/symbol.c | 9 | ||||
-rw-r--r-- | tools/perf/util/thread_map.c | 10 | ||||
-rw-r--r-- | tools/perf/util/trace-event-info.c | 6 | ||||
-rw-r--r-- | tools/perf/util/util.h | 2 |
22 files changed, 56 insertions, 103 deletions
diff --git a/tools/perf/arch/common.c b/tools/perf/arch/common.c index aacef07ebf31..42faf369211c 100644 --- a/tools/perf/arch/common.c +++ b/tools/perf/arch/common.c | |||
@@ -154,8 +154,7 @@ static int perf_session_env__lookup_binutils_path(struct perf_session_env *env, | |||
154 | } | 154 | } |
155 | if (lookup_path(buf)) | 155 | if (lookup_path(buf)) |
156 | goto out; | 156 | goto out; |
157 | free(buf); | 157 | zfree(&buf); |
158 | buf = NULL; | ||
159 | } | 158 | } |
160 | 159 | ||
161 | if (!strcmp(arch, "arm")) | 160 | if (!strcmp(arch, "arm")) |
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 4136f9970fd5..ab65057a0317 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
@@ -180,8 +180,7 @@ find_next: | |||
180 | * symbol, free he->ms.sym->src to signal we already | 180 | * symbol, free he->ms.sym->src to signal we already |
181 | * processed this symbol. | 181 | * processed this symbol. |
182 | */ | 182 | */ |
183 | free(notes->src); | 183 | zfree(¬es->src); |
184 | notes->src = NULL; | ||
185 | } | 184 | } |
186 | } | 185 | } |
187 | } | 186 | } |
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index dab98b50c9fe..106a5e5b7842 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c | |||
@@ -185,8 +185,7 @@ static int perf_evsel__alloc_stat_priv(struct perf_evsel *evsel) | |||
185 | 185 | ||
186 | static void perf_evsel__free_stat_priv(struct perf_evsel *evsel) | 186 | static void perf_evsel__free_stat_priv(struct perf_evsel *evsel) |
187 | { | 187 | { |
188 | free(evsel->priv); | 188 | zfree(&evsel->priv); |
189 | evsel->priv = NULL; | ||
190 | } | 189 | } |
191 | 190 | ||
192 | static int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel) | 191 | static int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel) |
@@ -208,8 +207,7 @@ static int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel) | |||
208 | 207 | ||
209 | static void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel) | 208 | static void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel) |
210 | { | 209 | { |
211 | free(evsel->prev_raw_counts); | 210 | zfree(&evsel->prev_raw_counts); |
212 | evsel->prev_raw_counts = NULL; | ||
213 | } | 211 | } |
214 | 212 | ||
215 | static void perf_evlist__free_stats(struct perf_evlist *evlist) | 213 | static void perf_evlist__free_stats(struct perf_evlist *evlist) |
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c index 20d4212fa337..652af0b66a62 100644 --- a/tools/perf/builtin-timechart.c +++ b/tools/perf/builtin-timechart.c | |||
@@ -488,8 +488,7 @@ static const char *cat_backtrace(union perf_event *event, | |||
488 | * It seems the callchain is corrupted. | 488 | * It seems the callchain is corrupted. |
489 | * Discard all. | 489 | * Discard all. |
490 | */ | 490 | */ |
491 | free(p); | 491 | zfree(&p); |
492 | p = NULL; | ||
493 | goto exit; | 492 | goto exit; |
494 | } | 493 | } |
495 | continue; | 494 | continue; |
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index f64b5b0aa8b1..c5b4bc51175c 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
@@ -146,8 +146,7 @@ static int perf_evsel__init_tp_ptr_field(struct perf_evsel *evsel, | |||
146 | 146 | ||
147 | static void perf_evsel__delete_priv(struct perf_evsel *evsel) | 147 | static void perf_evsel__delete_priv(struct perf_evsel *evsel) |
148 | { | 148 | { |
149 | free(evsel->priv); | 149 | zfree(&evsel->priv); |
150 | evsel->priv = NULL; | ||
151 | perf_evsel__delete(evsel); | 150 | perf_evsel__delete(evsel); |
152 | } | 151 | } |
153 | 152 | ||
@@ -165,8 +164,7 @@ static int perf_evsel__init_syscall_tp(struct perf_evsel *evsel, void *handler) | |||
165 | return -ENOMEM; | 164 | return -ENOMEM; |
166 | 165 | ||
167 | out_delete: | 166 | out_delete: |
168 | free(evsel->priv); | 167 | zfree(&evsel->priv); |
169 | evsel->priv = NULL; | ||
170 | return -ENOENT; | 168 | return -ENOENT; |
171 | } | 169 | } |
172 | 170 | ||
@@ -1278,10 +1276,8 @@ static size_t syscall_arg__scnprintf_close_fd(char *bf, size_t size, | |||
1278 | size_t printed = syscall_arg__scnprintf_fd(bf, size, arg); | 1276 | size_t printed = syscall_arg__scnprintf_fd(bf, size, arg); |
1279 | struct thread_trace *ttrace = arg->thread->priv; | 1277 | struct thread_trace *ttrace = arg->thread->priv; |
1280 | 1278 | ||
1281 | if (ttrace && fd >= 0 && fd <= ttrace->paths.max) { | 1279 | if (ttrace && fd >= 0 && fd <= ttrace->paths.max) |
1282 | free(ttrace->paths.table[fd]); | 1280 | zfree(&ttrace->paths.table[fd]); |
1283 | ttrace->paths.table[fd] = NULL; | ||
1284 | } | ||
1285 | 1281 | ||
1286 | return printed; | 1282 | return printed; |
1287 | } | 1283 | } |
diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index 94223d404f43..d11541d4d7d7 100644 --- a/tools/perf/ui/browser.c +++ b/tools/perf/ui/browser.c | |||
@@ -256,8 +256,7 @@ int ui_browser__show(struct ui_browser *browser, const char *title, | |||
256 | __ui_browser__show_title(browser, title); | 256 | __ui_browser__show_title(browser, title); |
257 | 257 | ||
258 | browser->title = title; | 258 | browser->title = title; |
259 | free(browser->helpline); | 259 | zfree(&browser->helpline); |
260 | browser->helpline = NULL; | ||
261 | 260 | ||
262 | va_start(ap, helpline); | 261 | va_start(ap, helpline); |
263 | err = vasprintf(&browser->helpline, helpline, ap); | 262 | err = vasprintf(&browser->helpline, helpline, ap); |
@@ -272,8 +271,7 @@ void ui_browser__hide(struct ui_browser *browser) | |||
272 | { | 271 | { |
273 | pthread_mutex_lock(&ui__lock); | 272 | pthread_mutex_lock(&ui__lock); |
274 | ui_helpline__pop(); | 273 | ui_helpline__pop(); |
275 | free(browser->helpline); | 274 | zfree(&browser->helpline); |
276 | browser->helpline = NULL; | ||
277 | pthread_mutex_unlock(&ui__lock); | 275 | pthread_mutex_unlock(&ui__lock); |
278 | } | 276 | } |
279 | 277 | ||
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index 0d9dd99507ee..022d1731b801 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c | |||
@@ -1267,10 +1267,8 @@ static inline void free_popup_options(char **options, int n) | |||
1267 | { | 1267 | { |
1268 | int i; | 1268 | int i; |
1269 | 1269 | ||
1270 | for (i = 0; i < n; ++i) { | 1270 | for (i = 0; i < n; ++i) |
1271 | free(options[i]); | 1271 | zfree(&options[i]); |
1272 | options[i] = NULL; | ||
1273 | } | ||
1274 | } | 1272 | } |
1275 | 1273 | ||
1276 | /* Check whether the browser is for 'top' or 'report' */ | 1274 | /* Check whether the browser is for 'top' or 'report' */ |
diff --git a/tools/perf/ui/gtk/util.c b/tools/perf/ui/gtk/util.c index 696c1fbe4248..52e7fc48af9f 100644 --- a/tools/perf/ui/gtk/util.c +++ b/tools/perf/ui/gtk/util.c | |||
@@ -23,8 +23,7 @@ int perf_gtk__deactivate_context(struct perf_gtk_context **ctx) | |||
23 | if (!perf_gtk__is_active_context(*ctx)) | 23 | if (!perf_gtk__is_active_context(*ctx)) |
24 | return -1; | 24 | return -1; |
25 | 25 | ||
26 | free(*ctx); | 26 | zfree(ctx); |
27 | *ctx = NULL; | ||
28 | return 0; | 27 | return 0; |
29 | } | 28 | } |
30 | 29 | ||
diff --git a/tools/perf/util/alias.c b/tools/perf/util/alias.c index e6d134773d0a..c0b43ee40d95 100644 --- a/tools/perf/util/alias.c +++ b/tools/perf/util/alias.c | |||
@@ -55,8 +55,7 @@ int split_cmdline(char *cmdline, const char ***argv) | |||
55 | src++; | 55 | src++; |
56 | c = cmdline[src]; | 56 | c = cmdline[src]; |
57 | if (!c) { | 57 | if (!c) { |
58 | free(*argv); | 58 | zfree(argv); |
59 | *argv = NULL; | ||
60 | return error("cmdline ends with \\"); | 59 | return error("cmdline ends with \\"); |
61 | } | 60 | } |
62 | } | 61 | } |
@@ -68,8 +67,7 @@ int split_cmdline(char *cmdline, const char ***argv) | |||
68 | cmdline[dst] = 0; | 67 | cmdline[dst] = 0; |
69 | 68 | ||
70 | if (quoted) { | 69 | if (quoted) { |
71 | free(*argv); | 70 | zfree(argv); |
72 | *argv = NULL; | ||
73 | return error("unclosed quote"); | 71 | return error("unclosed quote"); |
74 | } | 72 | } |
75 | 73 | ||
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 27ab7b59dbf4..a78721d14694 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c | |||
@@ -185,8 +185,7 @@ static int lock__parse(struct ins_operands *ops) | |||
185 | return 0; | 185 | return 0; |
186 | 186 | ||
187 | out_free_ops: | 187 | out_free_ops: |
188 | free(ops->locked.ops); | 188 | zfree(&ops->locked.ops); |
189 | ops->locked.ops = NULL; | ||
190 | return 0; | 189 | return 0; |
191 | } | 190 | } |
192 | 191 | ||
@@ -256,8 +255,7 @@ static int mov__parse(struct ins_operands *ops) | |||
256 | return 0; | 255 | return 0; |
257 | 256 | ||
258 | out_free_source: | 257 | out_free_source: |
259 | free(ops->source.raw); | 258 | zfree(&ops->source.raw); |
260 | ops->source.raw = NULL; | ||
261 | return -1; | 259 | return -1; |
262 | } | 260 | } |
263 | 261 | ||
@@ -560,8 +558,7 @@ static int disasm_line__parse(char *line, char **namep, char **rawp) | |||
560 | return 0; | 558 | return 0; |
561 | 559 | ||
562 | out_free_name: | 560 | out_free_name: |
563 | free(*namep); | 561 | zfree(namep); |
564 | *namep = NULL; | ||
565 | return -1; | 562 | return -1; |
566 | } | 563 | } |
567 | 564 | ||
@@ -1113,8 +1110,7 @@ static void symbol__free_source_line(struct symbol *sym, int len) | |||
1113 | src_line = (void *)src_line + sizeof_src_line; | 1110 | src_line = (void *)src_line + sizeof_src_line; |
1114 | } | 1111 | } |
1115 | 1112 | ||
1116 | free(notes->src->lines); | 1113 | zfree(¬es->src->lines); |
1117 | notes->src->lines = NULL; | ||
1118 | } | 1114 | } |
1119 | 1115 | ||
1120 | /* Get the filename:line for the colored entries */ | 1116 | /* Get the filename:line for the colored entries */ |
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c index 4ddeecb9ff85..4045d086d9d9 100644 --- a/tools/perf/util/dso.c +++ b/tools/perf/util/dso.c | |||
@@ -497,21 +497,18 @@ void dso__delete(struct dso *dso) | |||
497 | symbols__delete(&dso->symbols[i]); | 497 | symbols__delete(&dso->symbols[i]); |
498 | 498 | ||
499 | if (dso->short_name_allocated) { | 499 | if (dso->short_name_allocated) { |
500 | free((char *)dso->short_name); | 500 | zfree((char **)&dso->short_name); |
501 | dso->short_name = NULL; | ||
502 | dso->short_name_allocated = false; | 501 | dso->short_name_allocated = false; |
503 | } | 502 | } |
504 | 503 | ||
505 | if (dso->long_name_allocated) { | 504 | if (dso->long_name_allocated) { |
506 | free((char *)dso->long_name); | 505 | zfree((char **)&dso->long_name); |
507 | dso->long_name = NULL; | ||
508 | dso->long_name_allocated = false; | 506 | dso->long_name_allocated = false; |
509 | } | 507 | } |
510 | 508 | ||
511 | dso_cache__free(&dso->cache); | 509 | dso_cache__free(&dso->cache); |
512 | dso__free_a2l(dso); | 510 | dso__free_a2l(dso); |
513 | free(dso->symsrc_filename); | 511 | zfree(&dso->symsrc_filename); |
514 | dso->symsrc_filename = NULL; | ||
515 | free(dso); | 512 | free(dso); |
516 | } | 513 | } |
517 | 514 | ||
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index da3182914984..b08a7ecdcea1 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -101,10 +101,8 @@ static void perf_evlist__purge(struct perf_evlist *evlist) | |||
101 | 101 | ||
102 | void perf_evlist__exit(struct perf_evlist *evlist) | 102 | void perf_evlist__exit(struct perf_evlist *evlist) |
103 | { | 103 | { |
104 | free(evlist->mmap); | 104 | zfree(&evlist->mmap); |
105 | free(evlist->pollfd); | 105 | zfree(&evlist->pollfd); |
106 | evlist->mmap = NULL; | ||
107 | evlist->pollfd = NULL; | ||
108 | } | 106 | } |
109 | 107 | ||
110 | void perf_evlist__delete(struct perf_evlist *evlist) | 108 | void perf_evlist__delete(struct perf_evlist *evlist) |
@@ -587,8 +585,7 @@ void perf_evlist__munmap(struct perf_evlist *evlist) | |||
587 | for (i = 0; i < evlist->nr_mmaps; i++) | 585 | for (i = 0; i < evlist->nr_mmaps; i++) |
588 | __perf_evlist__munmap(evlist, i); | 586 | __perf_evlist__munmap(evlist, i); |
589 | 587 | ||
590 | free(evlist->mmap); | 588 | zfree(&evlist->mmap); |
591 | evlist->mmap = NULL; | ||
592 | } | 589 | } |
593 | 590 | ||
594 | static int perf_evlist__alloc_mmap(struct perf_evlist *evlist) | 591 | static int perf_evlist__alloc_mmap(struct perf_evlist *evlist) |
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 6874e0485693..93b6031d5459 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
@@ -750,8 +750,7 @@ void perf_evsel__free_id(struct perf_evsel *evsel) | |||
750 | { | 750 | { |
751 | xyarray__delete(evsel->sample_id); | 751 | xyarray__delete(evsel->sample_id); |
752 | evsel->sample_id = NULL; | 752 | evsel->sample_id = NULL; |
753 | free(evsel->id); | 753 | zfree(&evsel->id); |
754 | evsel->id = NULL; | ||
755 | } | 754 | } |
756 | 755 | ||
757 | void perf_evsel__close_fd(struct perf_evsel *evsel, int ncpus, int nthreads) | 756 | void perf_evsel__close_fd(struct perf_evsel *evsel, int ncpus, int nthreads) |
@@ -1960,8 +1959,7 @@ bool perf_evsel__fallback(struct perf_evsel *evsel, int err, | |||
1960 | evsel->attr.type = PERF_TYPE_SOFTWARE; | 1959 | evsel->attr.type = PERF_TYPE_SOFTWARE; |
1961 | evsel->attr.config = PERF_COUNT_SW_CPU_CLOCK; | 1960 | evsel->attr.config = PERF_COUNT_SW_CPU_CLOCK; |
1962 | 1961 | ||
1963 | free(evsel->name); | 1962 | zfree(&evsel->name); |
1964 | evsel->name = NULL; | ||
1965 | return true; | 1963 | return true; |
1966 | } | 1964 | } |
1967 | 1965 | ||
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 10730b0af804..20f3a9c97bd8 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -1324,8 +1324,7 @@ read_event_desc(struct perf_header *ph, int fd) | |||
1324 | } | 1324 | } |
1325 | } | 1325 | } |
1326 | out: | 1326 | out: |
1327 | if (buf) | 1327 | free(buf); |
1328 | free(buf); | ||
1329 | return events; | 1328 | return events; |
1330 | error: | 1329 | error: |
1331 | if (events) | 1330 | if (events) |
diff --git a/tools/perf/util/help.c b/tools/perf/util/help.c index 8b1f6e891b8a..7b68978e50d2 100644 --- a/tools/perf/util/help.c +++ b/tools/perf/util/help.c | |||
@@ -263,9 +263,8 @@ static void add_cmd_list(struct cmdnames *cmds, struct cmdnames *old) | |||
263 | 263 | ||
264 | for (i = 0; i < old->cnt; i++) | 264 | for (i = 0; i < old->cnt; i++) |
265 | cmds->names[cmds->cnt++] = old->names[i]; | 265 | cmds->names[cmds->cnt++] = old->names[i]; |
266 | free(old->names); | 266 | zfree(&old->names); |
267 | old->cnt = 0; | 267 | old->cnt = 0; |
268 | old->names = NULL; | ||
269 | } | 268 | } |
270 | 269 | ||
271 | const char *help_unknown_cmd(const char *cmd) | 270 | const char *help_unknown_cmd(const char *cmd) |
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index c78cc84f433e..a98538dc465a 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c | |||
@@ -102,8 +102,7 @@ void machine__exit(struct machine *machine) | |||
102 | map_groups__exit(&machine->kmaps); | 102 | map_groups__exit(&machine->kmaps); |
103 | dsos__delete(&machine->user_dsos); | 103 | dsos__delete(&machine->user_dsos); |
104 | dsos__delete(&machine->kernel_dsos); | 104 | dsos__delete(&machine->kernel_dsos); |
105 | free(machine->root_dir); | 105 | zfree(&machine->root_dir); |
106 | machine->root_dir = NULL; | ||
107 | } | 106 | } |
108 | 107 | ||
109 | void machine__delete(struct machine *machine) | 108 | void machine__delete(struct machine *machine) |
@@ -562,11 +561,10 @@ void machine__destroy_kernel_maps(struct machine *machine) | |||
562 | * on one of them. | 561 | * on one of them. |
563 | */ | 562 | */ |
564 | if (type == MAP__FUNCTION) { | 563 | if (type == MAP__FUNCTION) { |
565 | free((char *)kmap->ref_reloc_sym->name); | 564 | zfree((char **)&kmap->ref_reloc_sym->name); |
566 | kmap->ref_reloc_sym->name = NULL; | 565 | zfree(&kmap->ref_reloc_sym); |
567 | free(kmap->ref_reloc_sym); | 566 | } else |
568 | } | 567 | kmap->ref_reloc_sym = NULL; |
569 | kmap->ref_reloc_sym = NULL; | ||
570 | } | 568 | } |
571 | 569 | ||
572 | map__delete(machine->vmlinux_maps[type]); | 570 | map__delete(machine->vmlinux_maps[type]); |
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 095a98ec7444..4d3cd1a0278a 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -506,15 +506,13 @@ static int get_real_path(const char *raw_path, const char *comp_dir, | |||
506 | case EFAULT: | 506 | case EFAULT: |
507 | raw_path = strchr(++raw_path, '/'); | 507 | raw_path = strchr(++raw_path, '/'); |
508 | if (!raw_path) { | 508 | if (!raw_path) { |
509 | free(*new_path); | 509 | zfree(new_path); |
510 | *new_path = NULL; | ||
511 | return -ENOENT; | 510 | return -ENOENT; |
512 | } | 511 | } |
513 | continue; | 512 | continue; |
514 | 513 | ||
515 | default: | 514 | default: |
516 | free(*new_path); | 515 | zfree(new_path); |
517 | *new_path = NULL; | ||
518 | return -errno; | 516 | return -errno; |
519 | } | 517 | } |
520 | } | 518 | } |
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c index 8c087359b7ce..6d8796e38d7f 100644 --- a/tools/perf/util/probe-finder.c +++ b/tools/perf/util/probe-finder.c | |||
@@ -226,10 +226,8 @@ struct debuginfo *debuginfo__new(const char *path) | |||
226 | if (!dbg) | 226 | if (!dbg) |
227 | return NULL; | 227 | return NULL; |
228 | 228 | ||
229 | if (debuginfo__init_offline_dwarf(dbg, path) < 0) { | 229 | if (debuginfo__init_offline_dwarf(dbg, path) < 0) |
230 | free(dbg); | 230 | zfree(&dbg); |
231 | dbg = NULL; | ||
232 | } | ||
233 | 231 | ||
234 | return dbg; | 232 | return dbg; |
235 | } | 233 | } |
@@ -241,10 +239,8 @@ struct debuginfo *debuginfo__new_online_kernel(unsigned long addr) | |||
241 | if (!dbg) | 239 | if (!dbg) |
242 | return NULL; | 240 | return NULL; |
243 | 241 | ||
244 | if (debuginfo__init_online_kernel_dwarf(dbg, (Dwarf_Addr)addr) < 0) { | 242 | if (debuginfo__init_online_kernel_dwarf(dbg, (Dwarf_Addr)addr) < 0) |
245 | free(dbg); | 243 | zfree(&dbg); |
246 | dbg = NULL; | ||
247 | } | ||
248 | 244 | ||
249 | return dbg; | 245 | return dbg; |
250 | } | 246 | } |
@@ -1302,8 +1298,7 @@ int debuginfo__find_trace_events(struct debuginfo *dbg, | |||
1302 | 1298 | ||
1303 | ret = debuginfo__find_probes(dbg, &tf.pf); | 1299 | ret = debuginfo__find_probes(dbg, &tf.pf); |
1304 | if (ret < 0) { | 1300 | if (ret < 0) { |
1305 | free(*tevs); | 1301 | zfree(tevs); |
1306 | *tevs = NULL; | ||
1307 | return ret; | 1302 | return ret; |
1308 | } | 1303 | } |
1309 | 1304 | ||
@@ -1417,8 +1412,7 @@ int debuginfo__find_available_vars_at(struct debuginfo *dbg, | |||
1417 | free(af.vls[af.nvls].point.symbol); | 1412 | free(af.vls[af.nvls].point.symbol); |
1418 | strlist__delete(af.vls[af.nvls].vars); | 1413 | strlist__delete(af.vls[af.nvls].vars); |
1419 | } | 1414 | } |
1420 | free(af.vls); | 1415 | zfree(vls); |
1421 | *vls = NULL; | ||
1422 | return ret; | 1416 | return ret; |
1423 | } | 1417 | } |
1424 | 1418 | ||
@@ -1522,8 +1516,7 @@ post: | |||
1522 | if (fname) { | 1516 | if (fname) { |
1523 | ppt->file = strdup(fname); | 1517 | ppt->file = strdup(fname); |
1524 | if (ppt->file == NULL) { | 1518 | if (ppt->file == NULL) { |
1525 | free(ppt->function); | 1519 | zfree(&ppt->function); |
1526 | ppt->function = NULL; | ||
1527 | ret = -ENOMEM; | 1520 | ret = -ENOMEM; |
1528 | goto end; | 1521 | goto end; |
1529 | } | 1522 | } |
@@ -1577,8 +1570,7 @@ static int find_line_range_by_line(Dwarf_Die *sp_die, struct line_finder *lf) | |||
1577 | else | 1570 | else |
1578 | ret = 0; /* Lines are not found */ | 1571 | ret = 0; /* Lines are not found */ |
1579 | else { | 1572 | else { |
1580 | free(lf->lr->path); | 1573 | zfree(&lf->lr->path); |
1581 | lf->lr->path = NULL; | ||
1582 | } | 1574 | } |
1583 | return ret; | 1575 | return ret; |
1584 | } | 1576 | } |
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 923d00040bbf..fd9e1a4fad16 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
@@ -1621,13 +1621,10 @@ static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map, | |||
1621 | 1621 | ||
1622 | static void vmlinux_path__exit(void) | 1622 | static void vmlinux_path__exit(void) |
1623 | { | 1623 | { |
1624 | while (--vmlinux_path__nr_entries >= 0) { | 1624 | while (--vmlinux_path__nr_entries >= 0) |
1625 | free(vmlinux_path[vmlinux_path__nr_entries]); | 1625 | zfree(&vmlinux_path[vmlinux_path__nr_entries]); |
1626 | vmlinux_path[vmlinux_path__nr_entries] = NULL; | ||
1627 | } | ||
1628 | 1626 | ||
1629 | free(vmlinux_path); | 1627 | zfree(&vmlinux_path); |
1630 | vmlinux_path = NULL; | ||
1631 | } | 1628 | } |
1632 | 1629 | ||
1633 | static int vmlinux_path__init(void) | 1630 | static int vmlinux_path__init(void) |
diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c index 9b5f856cc280..cf44644a4058 100644 --- a/tools/perf/util/thread_map.c +++ b/tools/perf/util/thread_map.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include "strlist.h" | 9 | #include "strlist.h" |
10 | #include <string.h> | 10 | #include <string.h> |
11 | #include "thread_map.h" | 11 | #include "thread_map.h" |
12 | #include "util.h" | ||
12 | 13 | ||
13 | /* Skip "." and ".." directories */ | 14 | /* Skip "." and ".." directories */ |
14 | static int filter(const struct dirent *dir) | 15 | static int filter(const struct dirent *dir) |
@@ -138,8 +139,7 @@ out_free_namelist: | |||
138 | free(namelist); | 139 | free(namelist); |
139 | 140 | ||
140 | out_free_closedir: | 141 | out_free_closedir: |
141 | free(threads); | 142 | zfree(&threads); |
142 | threads = NULL; | ||
143 | goto out_closedir; | 143 | goto out_closedir; |
144 | } | 144 | } |
145 | 145 | ||
@@ -210,8 +210,7 @@ out_free_namelist: | |||
210 | free(namelist); | 210 | free(namelist); |
211 | 211 | ||
212 | out_free_threads: | 212 | out_free_threads: |
213 | free(threads); | 213 | zfree(&threads); |
214 | threads = NULL; | ||
215 | goto out; | 214 | goto out; |
216 | } | 215 | } |
217 | 216 | ||
@@ -262,8 +261,7 @@ out: | |||
262 | return threads; | 261 | return threads; |
263 | 262 | ||
264 | out_free_threads: | 263 | out_free_threads: |
265 | free(threads); | 264 | zfree(&threads); |
266 | threads = NULL; | ||
267 | goto out; | 265 | goto out; |
268 | } | 266 | } |
269 | 267 | ||
diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c index c354b95a2348..9f73bf43862c 100644 --- a/tools/perf/util/trace-event-info.c +++ b/tools/perf/util/trace-event-info.c | |||
@@ -562,10 +562,8 @@ out: | |||
562 | output_fd = fd; | 562 | output_fd = fd; |
563 | } | 563 | } |
564 | 564 | ||
565 | if (err) { | 565 | if (err) |
566 | free(tdata); | 566 | zfree(&tdata); |
567 | tdata = NULL; | ||
568 | } | ||
569 | 567 | ||
570 | put_tracepoints_path(tps); | 568 | put_tracepoints_path(tps); |
571 | return tdata; | 569 | return tdata; |
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h index 9a2c268ad718..6995d66f225c 100644 --- a/tools/perf/util/util.h +++ b/tools/perf/util/util.h | |||
@@ -186,6 +186,8 @@ static inline void *zalloc(size_t size) | |||
186 | return calloc(1, size); | 186 | return calloc(1, size); |
187 | } | 187 | } |
188 | 188 | ||
189 | #define zfree(ptr) ({ free(*ptr); *ptr = NULL; }) | ||
190 | |||
189 | static inline int has_extension(const char *filename, const char *ext) | 191 | static inline int has_extension(const char *filename, const char *ext) |
190 | { | 192 | { |
191 | size_t len = strlen(filename); | 193 | size_t len = strlen(filename); |