diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2019-07-04 11:13:46 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2019-07-09 09:13:27 -0400 |
commit | e56fbc9dc79ce0fdc49ffadd062214ddd02f65b6 (patch) | |
tree | b108e9b4fcb4cc1be29778253097089884b00f23 | |
parent | d8f9da240495b50766239410f9b0c715ca506a67 (diff) |
perf tools: Use list_del_init() more thorougly
To allow for destructors to check if they're operating on a object still
in a list, and to avoid going from use after free list entries into
still valid, or even also other already removed from list entries.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lkml.kernel.org/n/tip-deh17ub44atyox3j90e6rksu@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/builtin-ftrace.c | 2 | ||||
-rw-r--r-- | tools/perf/builtin-lock.c | 8 | ||||
-rw-r--r-- | tools/perf/pmu-events/jevents.c | 2 | ||||
-rw-r--r-- | tools/perf/tests/switch-tracking.c | 2 | ||||
-rw-r--r-- | tools/perf/ui/gtk/annotate.c | 2 | ||||
-rw-r--r-- | tools/perf/util/annotate.c | 4 | ||||
-rw-r--r-- | tools/perf/util/auxtrace.c | 4 | ||||
-rw-r--r-- | tools/perf/util/bpf-loader.c | 2 | ||||
-rw-r--r-- | tools/perf/util/call-path.c | 2 | ||||
-rw-r--r-- | tools/perf/util/callchain.c | 10 | ||||
-rw-r--r-- | tools/perf/util/db-export.c | 4 | ||||
-rw-r--r-- | tools/perf/util/dso.c | 2 | ||||
-rw-r--r-- | tools/perf/util/evsel.c | 2 | ||||
-rw-r--r-- | tools/perf/util/hist.c | 4 | ||||
-rw-r--r-- | tools/perf/util/ordered-events.c | 6 | ||||
-rw-r--r-- | tools/perf/util/parse-events.c | 2 | ||||
-rw-r--r-- | tools/perf/util/pmu.c | 2 | ||||
-rw-r--r-- | tools/perf/util/probe-event.c | 2 | ||||
-rw-r--r-- | tools/perf/util/s390-cpumsf.c | 2 | ||||
-rw-r--r-- | tools/perf/util/srccode.c | 2 | ||||
-rw-r--r-- | tools/perf/util/symbol-elf.c | 6 | ||||
-rw-r--r-- | tools/perf/util/thread.c | 4 |
22 files changed, 38 insertions, 38 deletions
diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c index 9c228c55e1fb..66d5a6658daf 100644 --- a/tools/perf/builtin-ftrace.c +++ b/tools/perf/builtin-ftrace.c | |||
@@ -431,7 +431,7 @@ static void delete_filter_func(struct list_head *head) | |||
431 | struct filter_entry *pos, *tmp; | 431 | struct filter_entry *pos, *tmp; |
432 | 432 | ||
433 | list_for_each_entry_safe(pos, tmp, head, list) { | 433 | list_for_each_entry_safe(pos, tmp, head, list) { |
434 | list_del(&pos->list); | 434 | list_del_init(&pos->list); |
435 | free(pos); | 435 | free(pos); |
436 | } | 436 | } |
437 | } | 437 | } |
diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index c0be44e65e9d..574e30ec6d7c 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c | |||
@@ -454,7 +454,7 @@ broken: | |||
454 | /* broken lock sequence, discard it */ | 454 | /* broken lock sequence, discard it */ |
455 | ls->discard = 1; | 455 | ls->discard = 1; |
456 | bad_hist[BROKEN_ACQUIRE]++; | 456 | bad_hist[BROKEN_ACQUIRE]++; |
457 | list_del(&seq->list); | 457 | list_del_init(&seq->list); |
458 | free(seq); | 458 | free(seq); |
459 | goto end; | 459 | goto end; |
460 | default: | 460 | default: |
@@ -515,7 +515,7 @@ static int report_lock_acquired_event(struct perf_evsel *evsel, | |||
515 | /* broken lock sequence, discard it */ | 515 | /* broken lock sequence, discard it */ |
516 | ls->discard = 1; | 516 | ls->discard = 1; |
517 | bad_hist[BROKEN_ACQUIRED]++; | 517 | bad_hist[BROKEN_ACQUIRED]++; |
518 | list_del(&seq->list); | 518 | list_del_init(&seq->list); |
519 | free(seq); | 519 | free(seq); |
520 | goto end; | 520 | goto end; |
521 | default: | 521 | default: |
@@ -570,7 +570,7 @@ static int report_lock_contended_event(struct perf_evsel *evsel, | |||
570 | /* broken lock sequence, discard it */ | 570 | /* broken lock sequence, discard it */ |
571 | ls->discard = 1; | 571 | ls->discard = 1; |
572 | bad_hist[BROKEN_CONTENDED]++; | 572 | bad_hist[BROKEN_CONTENDED]++; |
573 | list_del(&seq->list); | 573 | list_del_init(&seq->list); |
574 | free(seq); | 574 | free(seq); |
575 | goto end; | 575 | goto end; |
576 | default: | 576 | default: |
@@ -639,7 +639,7 @@ static int report_lock_release_event(struct perf_evsel *evsel, | |||
639 | 639 | ||
640 | ls->nr_release++; | 640 | ls->nr_release++; |
641 | free_seq: | 641 | free_seq: |
642 | list_del(&seq->list); | 642 | list_del_init(&seq->list); |
643 | free(seq); | 643 | free(seq); |
644 | end: | 644 | end: |
645 | return 0; | 645 | return 0; |
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c index 287a6f10ca48..1a91a197cafb 100644 --- a/tools/perf/pmu-events/jevents.c +++ b/tools/perf/pmu-events/jevents.c | |||
@@ -407,7 +407,7 @@ static void free_arch_std_events(void) | |||
407 | 407 | ||
408 | list_for_each_entry_safe(es, next, &arch_std_events, list) { | 408 | list_for_each_entry_safe(es, next, &arch_std_events, list) { |
409 | FOR_ALL_EVENT_STRUCT_FIELDS(FREE_EVENT_FIELD); | 409 | FOR_ALL_EVENT_STRUCT_FIELDS(FREE_EVENT_FIELD); |
410 | list_del(&es->list); | 410 | list_del_init(&es->list); |
411 | free(es); | 411 | free(es); |
412 | } | 412 | } |
413 | } | 413 | } |
diff --git a/tools/perf/tests/switch-tracking.c b/tools/perf/tests/switch-tracking.c index 744409dce65f..6cdab5f4812a 100644 --- a/tools/perf/tests/switch-tracking.c +++ b/tools/perf/tests/switch-tracking.c | |||
@@ -238,7 +238,7 @@ static void free_event_nodes(struct list_head *events) | |||
238 | 238 | ||
239 | while (!list_empty(events)) { | 239 | while (!list_empty(events)) { |
240 | node = list_entry(events->next, struct event_node, list); | 240 | node = list_entry(events->next, struct event_node, list); |
241 | list_del(&node->list); | 241 | list_del_init(&node->list); |
242 | free(node); | 242 | free(node); |
243 | } | 243 | } |
244 | } | 244 | } |
diff --git a/tools/perf/ui/gtk/annotate.c b/tools/perf/ui/gtk/annotate.c index df49c9ba1785..3af87c18a914 100644 --- a/tools/perf/ui/gtk/annotate.c +++ b/tools/perf/ui/gtk/annotate.c | |||
@@ -152,7 +152,7 @@ static int perf_gtk__annotate_symbol(GtkWidget *window, struct symbol *sym, | |||
152 | gtk_container_add(GTK_CONTAINER(window), view); | 152 | gtk_container_add(GTK_CONTAINER(window), view); |
153 | 153 | ||
154 | list_for_each_entry_safe(pos, n, ¬es->src->source, al.node) { | 154 | list_for_each_entry_safe(pos, n, ¬es->src->source, al.node) { |
155 | list_del(&pos->al.node); | 155 | list_del_init(&pos->al.node); |
156 | disasm_line__free(pos); | 156 | disasm_line__free(pos); |
157 | } | 157 | } |
158 | 158 | ||
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index ef0e6028684c..ac9ad2330f93 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c | |||
@@ -1586,7 +1586,7 @@ static void delete_last_nop(struct symbol *sym) | |||
1586 | return; | 1586 | return; |
1587 | } | 1587 | } |
1588 | 1588 | ||
1589 | list_del(&dl->al.node); | 1589 | list_del_init(&dl->al.node); |
1590 | disasm_line__free(dl); | 1590 | disasm_line__free(dl); |
1591 | } | 1591 | } |
1592 | } | 1592 | } |
@@ -2463,7 +2463,7 @@ void annotated_source__purge(struct annotated_source *as) | |||
2463 | struct annotation_line *al, *n; | 2463 | struct annotation_line *al, *n; |
2464 | 2464 | ||
2465 | list_for_each_entry_safe(al, n, &as->source, node) { | 2465 | list_for_each_entry_safe(al, n, &as->source, node) { |
2466 | list_del(&al->node); | 2466 | list_del_init(&al->node); |
2467 | disasm_line__free(disasm_line(al)); | 2467 | disasm_line__free(disasm_line(al)); |
2468 | } | 2468 | } |
2469 | } | 2469 | } |
diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index b033a43dfe3b..ec0af36697c4 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c | |||
@@ -408,7 +408,7 @@ void auxtrace_queues__free(struct auxtrace_queues *queues) | |||
408 | 408 | ||
409 | buffer = list_entry(queues->queue_array[i].head.next, | 409 | buffer = list_entry(queues->queue_array[i].head.next, |
410 | struct auxtrace_buffer, list); | 410 | struct auxtrace_buffer, list); |
411 | list_del(&buffer->list); | 411 | list_del_init(&buffer->list); |
412 | auxtrace_buffer__free(buffer); | 412 | auxtrace_buffer__free(buffer); |
413 | } | 413 | } |
414 | } | 414 | } |
@@ -612,7 +612,7 @@ void auxtrace_index__free(struct list_head *head) | |||
612 | struct auxtrace_index *auxtrace_index, *n; | 612 | struct auxtrace_index *auxtrace_index, *n; |
613 | 613 | ||
614 | list_for_each_entry_safe(auxtrace_index, n, head, list) { | 614 | list_for_each_entry_safe(auxtrace_index, n, head, list) { |
615 | list_del(&auxtrace_index->list); | 615 | list_del_init(&auxtrace_index->list); |
616 | free(auxtrace_index); | 616 | free(auxtrace_index); |
617 | } | 617 | } |
618 | } | 618 | } |
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c index 93d0f239ad4f..c61974a50aa5 100644 --- a/tools/perf/util/bpf-loader.c +++ b/tools/perf/util/bpf-loader.c | |||
@@ -829,7 +829,7 @@ static void | |||
829 | bpf_map_op__delete(struct bpf_map_op *op) | 829 | bpf_map_op__delete(struct bpf_map_op *op) |
830 | { | 830 | { |
831 | if (!list_empty(&op->list)) | 831 | if (!list_empty(&op->list)) |
832 | list_del(&op->list); | 832 | list_del_init(&op->list); |
833 | if (op->key_type == BPF_MAP_KEY_RANGES) | 833 | if (op->key_type == BPF_MAP_KEY_RANGES) |
834 | parse_events__clear_array(&op->k.array); | 834 | parse_events__clear_array(&op->k.array); |
835 | free(op); | 835 | free(op); |
diff --git a/tools/perf/util/call-path.c b/tools/perf/util/call-path.c index e8a80c41cba3..5c60b8be1cf6 100644 --- a/tools/perf/util/call-path.c +++ b/tools/perf/util/call-path.c | |||
@@ -40,7 +40,7 @@ void call_path_root__free(struct call_path_root *cpr) | |||
40 | struct call_path_block *pos, *n; | 40 | struct call_path_block *pos, *n; |
41 | 41 | ||
42 | list_for_each_entry_safe(pos, n, &cpr->blocks, node) { | 42 | list_for_each_entry_safe(pos, n, &cpr->blocks, node) { |
43 | list_del(&pos->node); | 43 | list_del_init(&pos->node); |
44 | free(pos); | 44 | free(pos); |
45 | } | 45 | } |
46 | free(cpr); | 46 | free(cpr); |
diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c index b4af25dca5eb..8d7d8f62fcca 100644 --- a/tools/perf/util/callchain.c +++ b/tools/perf/util/callchain.c | |||
@@ -636,7 +636,7 @@ add_child(struct callchain_node *parent, | |||
636 | struct callchain_list *call, *tmp; | 636 | struct callchain_list *call, *tmp; |
637 | 637 | ||
638 | list_for_each_entry_safe(call, tmp, &new->val, list) { | 638 | list_for_each_entry_safe(call, tmp, &new->val, list) { |
639 | list_del(&call->list); | 639 | list_del_init(&call->list); |
640 | map__zput(call->ms.map); | 640 | map__zput(call->ms.map); |
641 | free(call); | 641 | free(call); |
642 | } | 642 | } |
@@ -1002,7 +1002,7 @@ merge_chain_branch(struct callchain_cursor *cursor, | |||
1002 | callchain_cursor_append(cursor, list->ip, | 1002 | callchain_cursor_append(cursor, list->ip, |
1003 | list->ms.map, list->ms.sym, | 1003 | list->ms.map, list->ms.sym, |
1004 | false, NULL, 0, 0, 0, list->srcline); | 1004 | false, NULL, 0, 0, 0, list->srcline); |
1005 | list_del(&list->list); | 1005 | list_del_init(&list->list); |
1006 | map__zput(list->ms.map); | 1006 | map__zput(list->ms.map); |
1007 | free(list); | 1007 | free(list); |
1008 | } | 1008 | } |
@@ -1453,13 +1453,13 @@ static void free_callchain_node(struct callchain_node *node) | |||
1453 | struct rb_node *n; | 1453 | struct rb_node *n; |
1454 | 1454 | ||
1455 | list_for_each_entry_safe(list, tmp, &node->parent_val, list) { | 1455 | list_for_each_entry_safe(list, tmp, &node->parent_val, list) { |
1456 | list_del(&list->list); | 1456 | list_del_init(&list->list); |
1457 | map__zput(list->ms.map); | 1457 | map__zput(list->ms.map); |
1458 | free(list); | 1458 | free(list); |
1459 | } | 1459 | } |
1460 | 1460 | ||
1461 | list_for_each_entry_safe(list, tmp, &node->val, list) { | 1461 | list_for_each_entry_safe(list, tmp, &node->val, list) { |
1462 | list_del(&list->list); | 1462 | list_del_init(&list->list); |
1463 | map__zput(list->ms.map); | 1463 | map__zput(list->ms.map); |
1464 | free(list); | 1464 | free(list); |
1465 | } | 1465 | } |
@@ -1544,7 +1544,7 @@ int callchain_node__make_parent_list(struct callchain_node *node) | |||
1544 | 1544 | ||
1545 | out: | 1545 | out: |
1546 | list_for_each_entry_safe(chain, new, &head, list) { | 1546 | list_for_each_entry_safe(chain, new, &head, list) { |
1547 | list_del(&chain->list); | 1547 | list_del_init(&chain->list); |
1548 | map__zput(chain->ms.map); | 1548 | map__zput(chain->ms.map); |
1549 | free(chain); | 1549 | free(chain); |
1550 | } | 1550 | } |
diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c index 3f2694ccfac7..2394c7506abe 100644 --- a/tools/perf/util/db-export.c +++ b/tools/perf/util/db-export.c | |||
@@ -34,7 +34,7 @@ static int db_export__deferred(struct db_export *dbe) | |||
34 | de = list_entry(dbe->deferred.next, struct deferred_export, | 34 | de = list_entry(dbe->deferred.next, struct deferred_export, |
35 | node); | 35 | node); |
36 | err = dbe->export_comm(dbe, de->comm); | 36 | err = dbe->export_comm(dbe, de->comm); |
37 | list_del(&de->node); | 37 | list_del_init(&de->node); |
38 | free(de); | 38 | free(de); |
39 | if (err) | 39 | if (err) |
40 | return err; | 40 | return err; |
@@ -50,7 +50,7 @@ static void db_export__free_deferred(struct db_export *dbe) | |||
50 | while (!list_empty(&dbe->deferred)) { | 50 | while (!list_empty(&dbe->deferred)) { |
51 | de = list_entry(dbe->deferred.next, struct deferred_export, | 51 | de = list_entry(dbe->deferred.next, struct deferred_export, |
52 | node); | 52 | node); |
53 | list_del(&de->node); | 53 | list_del_init(&de->node); |
54 | free(de); | 54 | free(de); |
55 | } | 55 | } |
56 | } | 56 | } |
diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c index ebacf07fc9ee..ebc9d46c15a7 100644 --- a/tools/perf/util/dso.c +++ b/tools/perf/util/dso.c | |||
@@ -434,7 +434,7 @@ static void dso__list_add(struct dso *dso) | |||
434 | 434 | ||
435 | static void dso__list_del(struct dso *dso) | 435 | static void dso__list_del(struct dso *dso) |
436 | { | 436 | { |
437 | list_del(&dso->data.open_entry); | 437 | list_del_init(&dso->data.open_entry); |
438 | WARN_ONCE(dso__data_open_cnt <= 0, | 438 | WARN_ONCE(dso__data_open_cnt <= 0, |
439 | "DSO data fd counter out of bounds."); | 439 | "DSO data fd counter out of bounds."); |
440 | dso__data_open_cnt--; | 440 | dso__data_open_cnt--; |
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 7ede674edf07..ebb46da4dfe5 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
@@ -1298,7 +1298,7 @@ static void perf_evsel__free_config_terms(struct perf_evsel *evsel) | |||
1298 | struct perf_evsel_config_term *term, *h; | 1298 | struct perf_evsel_config_term *term, *h; |
1299 | 1299 | ||
1300 | list_for_each_entry_safe(term, h, &evsel->config_terms, list) { | 1300 | list_for_each_entry_safe(term, h, &evsel->config_terms, list) { |
1301 | list_del(&term->list); | 1301 | list_del_init(&term->list); |
1302 | free(term); | 1302 | free(term); |
1303 | } | 1303 | } |
1304 | } | 1304 | } |
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 9b0ee0ef0f44..f24fd1954f6c 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c | |||
@@ -2741,10 +2741,10 @@ static void hists_evsel__exit(struct perf_evsel *evsel) | |||
2741 | 2741 | ||
2742 | list_for_each_entry_safe(node, tmp, &hists->hpp_formats, list) { | 2742 | list_for_each_entry_safe(node, tmp, &hists->hpp_formats, list) { |
2743 | perf_hpp_list__for_each_format_safe(&node->hpp, fmt, pos) { | 2743 | perf_hpp_list__for_each_format_safe(&node->hpp, fmt, pos) { |
2744 | list_del(&fmt->list); | 2744 | list_del_init(&fmt->list); |
2745 | free(fmt); | 2745 | free(fmt); |
2746 | } | 2746 | } |
2747 | list_del(&node->list); | 2747 | list_del_init(&node->list); |
2748 | free(node); | 2748 | free(node); |
2749 | } | 2749 | } |
2750 | } | 2750 | } |
diff --git a/tools/perf/util/ordered-events.c b/tools/perf/util/ordered-events.c index 989fed6f43b5..bb5f34b7ab44 100644 --- a/tools/perf/util/ordered-events.c +++ b/tools/perf/util/ordered-events.c | |||
@@ -138,7 +138,7 @@ static struct ordered_event *alloc_event(struct ordered_events *oe, | |||
138 | 138 | ||
139 | if (!list_empty(cache)) { | 139 | if (!list_empty(cache)) { |
140 | new = list_entry(cache->next, struct ordered_event, list); | 140 | new = list_entry(cache->next, struct ordered_event, list); |
141 | list_del(&new->list); | 141 | list_del_init(&new->list); |
142 | } else if (oe->buffer) { | 142 | } else if (oe->buffer) { |
143 | new = &oe->buffer->event[oe->buffer_idx]; | 143 | new = &oe->buffer->event[oe->buffer_idx]; |
144 | if (++oe->buffer_idx == MAX_SAMPLE_BUFFER) | 144 | if (++oe->buffer_idx == MAX_SAMPLE_BUFFER) |
@@ -394,13 +394,13 @@ void ordered_events__free(struct ordered_events *oe) | |||
394 | * yet, we need to free only allocated ones ... | 394 | * yet, we need to free only allocated ones ... |
395 | */ | 395 | */ |
396 | if (oe->buffer) { | 396 | if (oe->buffer) { |
397 | list_del(&oe->buffer->list); | 397 | list_del_init(&oe->buffer->list); |
398 | ordered_events_buffer__free(oe->buffer, oe->buffer_idx, oe); | 398 | ordered_events_buffer__free(oe->buffer, oe->buffer_idx, oe); |
399 | } | 399 | } |
400 | 400 | ||
401 | /* ... and continue with the rest */ | 401 | /* ... and continue with the rest */ |
402 | list_for_each_entry_safe(buffer, tmp, &oe->to_free, list) { | 402 | list_for_each_entry_safe(buffer, tmp, &oe->to_free, list) { |
403 | list_del(&buffer->list); | 403 | list_del_init(&buffer->list); |
404 | ordered_events_buffer__free(buffer, MAX_SAMPLE_BUFFER, oe); | 404 | ordered_events_buffer__free(buffer, MAX_SAMPLE_BUFFER, oe); |
405 | } | 405 | } |
406 | } | 406 | } |
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index aa439853f20a..371ff3aee769 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c | |||
@@ -652,7 +652,7 @@ static int add_bpf_event(const char *group, const char *event, int fd, | |||
652 | pr_debug("Failed to add BPF event %s:%s\n", | 652 | pr_debug("Failed to add BPF event %s:%s\n", |
653 | group, event); | 653 | group, event); |
654 | list_for_each_entry_safe(evsel, tmp, &new_evsels, node) { | 654 | list_for_each_entry_safe(evsel, tmp, &new_evsels, node) { |
655 | list_del(&evsel->node); | 655 | list_del_init(&evsel->node); |
656 | perf_evsel__delete(evsel); | 656 | perf_evsel__delete(evsel); |
657 | } | 657 | } |
658 | return err; | 658 | return err; |
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 12b677902fbc..f32b710347db 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c | |||
@@ -1245,7 +1245,7 @@ int perf_pmu__check_alias(struct perf_pmu *pmu, struct list_head *head_terms, | |||
1245 | info->metric_expr = alias->metric_expr; | 1245 | info->metric_expr = alias->metric_expr; |
1246 | info->metric_name = alias->metric_name; | 1246 | info->metric_name = alias->metric_name; |
1247 | 1247 | ||
1248 | list_del(&term->list); | 1248 | list_del_init(&term->list); |
1249 | free(term); | 1249 | free(term); |
1250 | } | 1250 | } |
1251 | 1251 | ||
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 0a57b316c4dd..0c3b55d0617d 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -2333,7 +2333,7 @@ static void kprobe_blacklist__delete(struct list_head *blacklist) | |||
2333 | while (!list_empty(blacklist)) { | 2333 | while (!list_empty(blacklist)) { |
2334 | node = list_first_entry(blacklist, | 2334 | node = list_first_entry(blacklist, |
2335 | struct kprobe_blacklist_node, list); | 2335 | struct kprobe_blacklist_node, list); |
2336 | list_del(&node->list); | 2336 | list_del_init(&node->list); |
2337 | zfree(&node->symbol); | 2337 | zfree(&node->symbol); |
2338 | free(node); | 2338 | free(node); |
2339 | } | 2339 | } |
diff --git a/tools/perf/util/s390-cpumsf.c b/tools/perf/util/s390-cpumsf.c index cca9cb851d02..83d2e149ef19 100644 --- a/tools/perf/util/s390-cpumsf.c +++ b/tools/perf/util/s390-cpumsf.c | |||
@@ -756,7 +756,7 @@ static int s390_cpumsf_run_decoder(struct s390_cpumsf_queue *sfq, | |||
756 | */ | 756 | */ |
757 | if (err) { | 757 | if (err) { |
758 | sfq->buffer = NULL; | 758 | sfq->buffer = NULL; |
759 | list_del(&buffer->list); | 759 | list_del_init(&buffer->list); |
760 | auxtrace_buffer__free(buffer); | 760 | auxtrace_buffer__free(buffer); |
761 | if (err > 0) /* Buffer done, no error */ | 761 | if (err > 0) /* Buffer done, no error */ |
762 | err = 0; | 762 | err = 0; |
diff --git a/tools/perf/util/srccode.c b/tools/perf/util/srccode.c index 688a85a3d454..adfcf1ff464c 100644 --- a/tools/perf/util/srccode.c +++ b/tools/perf/util/srccode.c | |||
@@ -83,7 +83,7 @@ static void fill_lines(char **lines, int maxline, char *map, int maplen) | |||
83 | 83 | ||
84 | static void free_srcfile(struct srcfile *sf) | 84 | static void free_srcfile(struct srcfile *sf) |
85 | { | 85 | { |
86 | list_del(&sf->nd); | 86 | list_del_init(&sf->nd); |
87 | hlist_del(&sf->hash_nd); | 87 | hlist_del(&sf->hash_nd); |
88 | map_total_sz -= sf->maplen; | 88 | map_total_sz -= sf->maplen; |
89 | munmap(sf->map, sf->maplen); | 89 | munmap(sf->map, sf->maplen); |
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c index 1d5447594f5d..7d504dc22108 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c | |||
@@ -1478,7 +1478,7 @@ static void kcore_copy__free_phdrs(struct kcore_copy_info *kci) | |||
1478 | struct phdr_data *p, *tmp; | 1478 | struct phdr_data *p, *tmp; |
1479 | 1479 | ||
1480 | list_for_each_entry_safe(p, tmp, &kci->phdrs, node) { | 1480 | list_for_each_entry_safe(p, tmp, &kci->phdrs, node) { |
1481 | list_del(&p->node); | 1481 | list_del_init(&p->node); |
1482 | free(p); | 1482 | free(p); |
1483 | } | 1483 | } |
1484 | } | 1484 | } |
@@ -1501,7 +1501,7 @@ static void kcore_copy__free_syms(struct kcore_copy_info *kci) | |||
1501 | struct sym_data *s, *tmp; | 1501 | struct sym_data *s, *tmp; |
1502 | 1502 | ||
1503 | list_for_each_entry_safe(s, tmp, &kci->syms, node) { | 1503 | list_for_each_entry_safe(s, tmp, &kci->syms, node) { |
1504 | list_del(&s->node); | 1504 | list_del_init(&s->node); |
1505 | free(s); | 1505 | free(s); |
1506 | } | 1506 | } |
1507 | } | 1507 | } |
@@ -2252,7 +2252,7 @@ int cleanup_sdt_note_list(struct list_head *sdt_notes) | |||
2252 | int nr_free = 0; | 2252 | int nr_free = 0; |
2253 | 2253 | ||
2254 | list_for_each_entry_safe(pos, tmp, sdt_notes, note_list) { | 2254 | list_for_each_entry_safe(pos, tmp, sdt_notes, note_list) { |
2255 | list_del(&pos->note_list); | 2255 | list_del_init(&pos->note_list); |
2256 | zfree(&pos->name); | 2256 | zfree(&pos->name); |
2257 | zfree(&pos->provider); | 2257 | zfree(&pos->provider); |
2258 | free(pos); | 2258 | free(pos); |
diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c index bbfb9c767f5f..873ab505ca80 100644 --- a/tools/perf/util/thread.c +++ b/tools/perf/util/thread.c | |||
@@ -93,14 +93,14 @@ void thread__delete(struct thread *thread) | |||
93 | down_write(&thread->namespaces_lock); | 93 | down_write(&thread->namespaces_lock); |
94 | list_for_each_entry_safe(namespaces, tmp_namespaces, | 94 | list_for_each_entry_safe(namespaces, tmp_namespaces, |
95 | &thread->namespaces_list, list) { | 95 | &thread->namespaces_list, list) { |
96 | list_del(&namespaces->list); | 96 | list_del_init(&namespaces->list); |
97 | namespaces__free(namespaces); | 97 | namespaces__free(namespaces); |
98 | } | 98 | } |
99 | up_write(&thread->namespaces_lock); | 99 | up_write(&thread->namespaces_lock); |
100 | 100 | ||
101 | down_write(&thread->comm_lock); | 101 | down_write(&thread->comm_lock); |
102 | list_for_each_entry_safe(comm, tmp_comm, &thread->comm_list, list) { | 102 | list_for_each_entry_safe(comm, tmp_comm, &thread->comm_list, list) { |
103 | list_del(&comm->list); | 103 | list_del_init(&comm->list); |
104 | comm__free(comm); | 104 | comm__free(comm); |
105 | } | 105 | } |
106 | up_write(&thread->comm_lock); | 106 | up_write(&thread->comm_lock); |