diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-26 13:54:57 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-26 13:58:52 -0500 |
commit | f5385650c02cd4373c4124c8a8fac3b5f9851e7f (patch) | |
tree | 93d2a59ebf378289abf9853ab2da49c70ac80633 | |
parent | 6dd601354f14b5cd7a0a4103811e52ccec22ac53 (diff) |
perf tools: No need to test against NULL before calling free()
Its perfectly fine to call free(NULL), so no need to clutter the source
code with all those superfluous testing.
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-uux5wpvevlerd42gqer13e7n@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/builtin-kvm.c | 4 | ||||
-rw-r--r-- | tools/perf/ui/browsers/scripts.c | 3 | ||||
-rw-r--r-- | tools/perf/util/header.c | 6 | ||||
-rw-r--r-- | tools/perf/util/probe-event.c | 62 | ||||
-rw-r--r-- | tools/perf/util/probe-finder.c | 12 | ||||
-rw-r--r-- | tools/perf/util/scripting-engines/trace-event-perl.c | 3 | ||||
-rw-r--r-- | tools/perf/util/scripting-engines/trace-event-python.c | 3 |
7 files changed, 31 insertions, 62 deletions
diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 5a80da6ba413..a6ec1052c291 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c | |||
@@ -1158,9 +1158,7 @@ out: | |||
1158 | if (kvm->timerfd >= 0) | 1158 | if (kvm->timerfd >= 0) |
1159 | close(kvm->timerfd); | 1159 | close(kvm->timerfd); |
1160 | 1160 | ||
1161 | if (pollfds) | 1161 | free(pollfds); |
1162 | free(pollfds); | ||
1163 | |||
1164 | return err; | 1162 | return err; |
1165 | } | 1163 | } |
1166 | 1164 | ||
diff --git a/tools/perf/ui/browsers/scripts.c b/tools/perf/ui/browsers/scripts.c index d63c68ea02a8..402d2bd30b09 100644 --- a/tools/perf/ui/browsers/scripts.c +++ b/tools/perf/ui/browsers/scripts.c | |||
@@ -173,8 +173,7 @@ int script_browse(const char *script_opt) | |||
173 | if (script.b.width > AVERAGE_LINE_LEN) | 173 | if (script.b.width > AVERAGE_LINE_LEN) |
174 | script.b.width = AVERAGE_LINE_LEN; | 174 | script.b.width = AVERAGE_LINE_LEN; |
175 | 175 | ||
176 | if (line) | 176 | free(line); |
177 | free(line); | ||
178 | pclose(fp); | 177 | pclose(fp); |
179 | 178 | ||
180 | script.nr_lines = nr_entries; | 179 | script.nr_lines = nr_entries; |
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 61c54213704b..10730b0af804 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -1232,10 +1232,8 @@ static void free_event_desc(struct perf_evsel *events) | |||
1232 | return; | 1232 | return; |
1233 | 1233 | ||
1234 | for (evsel = events; evsel->attr.size; evsel++) { | 1234 | for (evsel = events; evsel->attr.size; evsel++) { |
1235 | if (evsel->name) | 1235 | free(evsel->name); |
1236 | free(evsel->name); | 1236 | free(evsel->id); |
1237 | if (evsel->id) | ||
1238 | free(evsel->id); | ||
1239 | } | 1237 | } |
1240 | 1238 | ||
1241 | free(events); | 1239 | free(events); |
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 72b56aef105e..095a98ec7444 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -401,9 +401,7 @@ static int add_module_to_probe_trace_events(struct probe_trace_event *tevs, | |||
401 | } | 401 | } |
402 | } | 402 | } |
403 | 403 | ||
404 | if (tmp) | 404 | free(tmp); |
405 | free(tmp); | ||
406 | |||
407 | return ret; | 405 | return ret; |
408 | } | 406 | } |
409 | 407 | ||
@@ -1382,8 +1380,7 @@ static char *synthesize_perf_probe_point(struct perf_probe_point *pp) | |||
1382 | error: | 1380 | error: |
1383 | pr_debug("Failed to synthesize perf probe point: %s\n", | 1381 | pr_debug("Failed to synthesize perf probe point: %s\n", |
1384 | strerror(-ret)); | 1382 | strerror(-ret)); |
1385 | if (buf) | 1383 | free(buf); |
1386 | free(buf); | ||
1387 | return NULL; | 1384 | return NULL; |
1388 | } | 1385 | } |
1389 | 1386 | ||
@@ -1584,34 +1581,25 @@ void clear_perf_probe_event(struct perf_probe_event *pev) | |||
1584 | struct perf_probe_arg_field *field, *next; | 1581 | struct perf_probe_arg_field *field, *next; |
1585 | int i; | 1582 | int i; |
1586 | 1583 | ||
1587 | if (pev->event) | 1584 | free(pev->event); |
1588 | free(pev->event); | 1585 | free(pev->group); |
1589 | if (pev->group) | 1586 | free(pp->file); |
1590 | free(pev->group); | 1587 | free(pp->function); |
1591 | if (pp->file) | 1588 | free(pp->lazy_line); |
1592 | free(pp->file); | 1589 | |
1593 | if (pp->function) | ||
1594 | free(pp->function); | ||
1595 | if (pp->lazy_line) | ||
1596 | free(pp->lazy_line); | ||
1597 | for (i = 0; i < pev->nargs; i++) { | 1590 | for (i = 0; i < pev->nargs; i++) { |
1598 | if (pev->args[i].name) | 1591 | free(pev->args[i].name); |
1599 | free(pev->args[i].name); | 1592 | free(pev->args[i].var); |
1600 | if (pev->args[i].var) | 1593 | free(pev->args[i].type); |
1601 | free(pev->args[i].var); | ||
1602 | if (pev->args[i].type) | ||
1603 | free(pev->args[i].type); | ||
1604 | field = pev->args[i].field; | 1594 | field = pev->args[i].field; |
1605 | while (field) { | 1595 | while (field) { |
1606 | next = field->next; | 1596 | next = field->next; |
1607 | if (field->name) | 1597 | free(field->name); |
1608 | free(field->name); | ||
1609 | free(field); | 1598 | free(field); |
1610 | field = next; | 1599 | field = next; |
1611 | } | 1600 | } |
1612 | } | 1601 | } |
1613 | if (pev->args) | 1602 | free(pev->args); |
1614 | free(pev->args); | ||
1615 | memset(pev, 0, sizeof(*pev)); | 1603 | memset(pev, 0, sizeof(*pev)); |
1616 | } | 1604 | } |
1617 | 1605 | ||
@@ -1620,21 +1608,14 @@ static void clear_probe_trace_event(struct probe_trace_event *tev) | |||
1620 | struct probe_trace_arg_ref *ref, *next; | 1608 | struct probe_trace_arg_ref *ref, *next; |
1621 | int i; | 1609 | int i; |
1622 | 1610 | ||
1623 | if (tev->event) | 1611 | free(tev->event); |
1624 | free(tev->event); | 1612 | free(tev->group); |
1625 | if (tev->group) | 1613 | free(tev->point.symbol); |
1626 | free(tev->group); | 1614 | free(tev->point.module); |
1627 | if (tev->point.symbol) | ||
1628 | free(tev->point.symbol); | ||
1629 | if (tev->point.module) | ||
1630 | free(tev->point.module); | ||
1631 | for (i = 0; i < tev->nargs; i++) { | 1615 | for (i = 0; i < tev->nargs; i++) { |
1632 | if (tev->args[i].name) | 1616 | free(tev->args[i].name); |
1633 | free(tev->args[i].name); | 1617 | free(tev->args[i].value); |
1634 | if (tev->args[i].value) | 1618 | free(tev->args[i].type); |
1635 | free(tev->args[i].value); | ||
1636 | if (tev->args[i].type) | ||
1637 | free(tev->args[i].type); | ||
1638 | ref = tev->args[i].ref; | 1619 | ref = tev->args[i].ref; |
1639 | while (ref) { | 1620 | while (ref) { |
1640 | next = ref->next; | 1621 | next = ref->next; |
@@ -1642,8 +1623,7 @@ static void clear_probe_trace_event(struct probe_trace_event *tev) | |||
1642 | ref = next; | 1623 | ref = next; |
1643 | } | 1624 | } |
1644 | } | 1625 | } |
1645 | if (tev->args) | 1626 | free(tev->args); |
1646 | free(tev->args); | ||
1647 | memset(tev, 0, sizeof(*tev)); | 1627 | memset(tev, 0, sizeof(*tev)); |
1648 | } | 1628 | } |
1649 | 1629 | ||
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c index 7db7e05ccb89..8c087359b7ce 100644 --- a/tools/perf/util/probe-finder.c +++ b/tools/perf/util/probe-finder.c | |||
@@ -1414,10 +1414,8 @@ int debuginfo__find_available_vars_at(struct debuginfo *dbg, | |||
1414 | if (ret < 0) { | 1414 | if (ret < 0) { |
1415 | /* Free vlist for error */ | 1415 | /* Free vlist for error */ |
1416 | while (af.nvls--) { | 1416 | while (af.nvls--) { |
1417 | if (af.vls[af.nvls].point.symbol) | 1417 | free(af.vls[af.nvls].point.symbol); |
1418 | free(af.vls[af.nvls].point.symbol); | 1418 | strlist__delete(af.vls[af.nvls].vars); |
1419 | if (af.vls[af.nvls].vars) | ||
1420 | strlist__delete(af.vls[af.nvls].vars); | ||
1421 | } | 1419 | } |
1422 | free(af.vls); | 1420 | free(af.vls); |
1423 | *vls = NULL; | 1421 | *vls = NULL; |
@@ -1524,10 +1522,8 @@ post: | |||
1524 | if (fname) { | 1522 | if (fname) { |
1525 | ppt->file = strdup(fname); | 1523 | ppt->file = strdup(fname); |
1526 | if (ppt->file == NULL) { | 1524 | if (ppt->file == NULL) { |
1527 | if (ppt->function) { | 1525 | free(ppt->function); |
1528 | free(ppt->function); | 1526 | ppt->function = NULL; |
1529 | ppt->function = NULL; | ||
1530 | } | ||
1531 | ret = -ENOMEM; | 1527 | ret = -ENOMEM; |
1532 | goto end; | 1528 | goto end; |
1533 | } | 1529 | } |
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c index 3773c4841cab..e108207c5de0 100644 --- a/tools/perf/util/scripting-engines/trace-event-perl.c +++ b/tools/perf/util/scripting-engines/trace-event-perl.c | |||
@@ -194,8 +194,7 @@ static void define_event_symbols(struct event_format *event, | |||
194 | zero_flag_atom = 0; | 194 | zero_flag_atom = 0; |
195 | break; | 195 | break; |
196 | case PRINT_FIELD: | 196 | case PRINT_FIELD: |
197 | if (cur_field_name) | 197 | free(cur_field_name); |
198 | free(cur_field_name); | ||
199 | cur_field_name = strdup(args->field.name); | 198 | cur_field_name = strdup(args->field.name); |
200 | break; | 199 | break; |
201 | case PRINT_FLAGS: | 200 | case PRINT_FLAGS: |
diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c index b258de6357ac..cd9774df3750 100644 --- a/tools/perf/util/scripting-engines/trace-event-python.c +++ b/tools/perf/util/scripting-engines/trace-event-python.c | |||
@@ -161,8 +161,7 @@ static void define_event_symbols(struct event_format *event, | |||
161 | zero_flag_atom = 0; | 161 | zero_flag_atom = 0; |
162 | break; | 162 | break; |
163 | case PRINT_FIELD: | 163 | case PRINT_FIELD: |
164 | if (cur_field_name) | 164 | free(cur_field_name); |
165 | free(cur_field_name); | ||
166 | cur_field_name = strdup(args->field.name); | 165 | cur_field_name = strdup(args->field.name); |
167 | break; | 166 | break; |
168 | case PRINT_FLAGS: | 167 | case PRINT_FLAGS: |