Merge tag 'perf-core-for-mingo-5.3-20190709' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent

Pull perf/core improvements and fixes:

Intel PT:

  Adrian Hunter:

  - Fix DROP VIEW power_events_view in the postgresql and sqlite export-db
    python scripts.

perf script:

  Song Liu:

  - Assume native_arch for pipe mode, fixing a segfault.

perf inject:

  Arnaldo Carvalho de Melo:

  - The tool->read() call may pass a NULL evsel, handle it.

core:

  Arnaldo Carvalho de Melo:

  - Move zalloc/zfree.c to tools/lib, further eroding tools/perf/util.[ch]

  - Use zfree() where applicable instead of open coded equivalent.

  - Add stdlib.h and some other headers to places where its needed and were
    getting via util.h, that doesn't need that anymore.

  - Use list_del_init() more thoroughly.

Miscellaneous:

  Leo Yan:

  - Fix use after free and potential NULL pointer derefs detected by the
    smatch tool in various places.

  Luke Mujica:

  - Remove a couple unused variables in the parse-events code.

  Numfor Mbiziwo-Tiapo:

  - Initialize variable to suppress memory sanitizer warning in the
    mmap-thread-lookup 'perf test' entry.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
Ingo Molnar
2019-07-13 11:12:47 +02:00
147 changed files with 375 additions and 279 deletions

View File

@@ -0,0 +1,12 @@
// SPDX-License-Identifier: LGPL-2.1
#ifndef __TOOLS_LINUX_ZALLOC_H
#define __TOOLS_LINUX_ZALLOC_H
#include <stddef.h>
void *zalloc(size_t size);
void __zfree(void **ptr);
#define zfree(ptr) __zfree((void **)(ptr))
#endif // __TOOLS_LINUX_ZALLOC_H

15
tools/lib/zalloc.c Normal file
View File

@@ -0,0 +1,15 @@
// SPDX-License-Identifier: LGPL-2.1
#include <stdlib.h>
#include <linux/zalloc.h>
void *zalloc(size_t size)
{
return calloc(1, size);
}
void __zfree(void **ptr)
{
free(*ptr);
*ptr = NULL;
}

View File

@@ -18,3 +18,4 @@ tools/lib/find_bit.c
tools/lib/bitmap.c tools/lib/bitmap.c
tools/lib/str_error_r.c tools/lib/str_error_r.c
tools/lib/vsprintf.c tools/lib/vsprintf.c
tools/lib/zalloc.c

View File

@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/zalloc.h>
#include <sys/types.h> #include <sys/types.h>
#include <regex.h> #include <regex.h>

View File

@@ -6,6 +6,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <linux/coresight-pmu.h> #include <linux/coresight-pmu.h>
#include <linux/zalloc.h>
#include "../../util/auxtrace.h" #include "../../util/auxtrace.h"
#include "../../util/evlist.h" #include "../../util/evlist.h"

View File

@@ -12,6 +12,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/zalloc.h>
#include "cs-etm.h" #include "cs-etm.h"
#include "../../perf.h" #include "../../perf.h"

View File

@@ -8,6 +8,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include <time.h> #include <time.h>
#include "../../util/cpumap.h" #include "../../util/cpumap.h"

View File

@@ -1,9 +1,10 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include "common.h" #include "common.h"
#include "../util/env.h" #include "../util/env.h"
#include "../util/util.h"
#include "../util/debug.h" #include "../util/debug.h"
#include <linux/zalloc.h>
const char *const arc_triplets[] = { const char *const arc_triplets[] = {
"arc-linux-", "arc-linux-",

View File

@@ -2,12 +2,14 @@
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
#include <regex.h> #include <regex.h>
#include <linux/zalloc.h>
#include "../../perf.h" #include "../../perf.h"
#include "../../util/util.h"
#include "../../util/perf_regs.h" #include "../../util/perf_regs.h"
#include "../../util/debug.h" #include "../../util/debug.h"
#include <linux/kernel.h>
const struct sample_reg sample_reg_masks[] = { const struct sample_reg sample_reg_masks[] = {
SMPL_REG(r0, PERF_REG_POWERPC_R0), SMPL_REG(r0, PERF_REG_POWERPC_R0),
SMPL_REG(r1, PERF_REG_POWERPC_R1), SMPL_REG(r1, PERF_REG_POWERPC_R1),

View File

@@ -3,6 +3,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include "../../util/evlist.h" #include "../../util/evlist.h"
#include "../../util/auxtrace.h" #include "../../util/auxtrace.h"

View File

@@ -12,9 +12,10 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/kernel.h>
#include <linux/zalloc.h>
#include "../../util/header.h" #include "../../util/header.h"
#include "../../util/util.h"
#define SYSINFO_MANU "Manufacturer:" #define SYSINFO_MANU "Manufacturer:"
#define SYSINFO_TYPE "Type:" #define SYSINFO_TYPE "Type:"

View File

@@ -1,11 +1,11 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/types.h> #include <linux/types.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/zalloc.h>
#include "../../util/machine.h" #include "../../util/machine.h"
#include "../../util/tool.h" #include "../../util/tool.h"
#include "../../util/map.h" #include "../../util/map.h"
#include "../../util/util.h"
#include "../../util/debug.h" #include "../../util/debug.h"
#if defined(__x86_64__) #if defined(__x86_64__)

View File

@@ -9,12 +9,12 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include "../../util/cpumap.h" #include "../../util/cpumap.h"
#include "../../util/evsel.h" #include "../../util/evsel.h"
#include "../../util/evlist.h" #include "../../util/evlist.h"
#include "../../util/session.h" #include "../../util/session.h"
#include "../../util/util.h"
#include "../../util/pmu.h" #include "../../util/pmu.h"
#include "../../util/debug.h" #include "../../util/debug.h"
#include "../../util/tsc.h" #include "../../util/tsc.h"

View File

@@ -10,6 +10,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include <cpuid.h> #include <cpuid.h>
#include "../../perf.h" #include "../../perf.h"
@@ -25,7 +26,6 @@
#include "../../util/auxtrace.h" #include "../../util/auxtrace.h"
#include "../../util/tsc.h" #include "../../util/tsc.h"
#include "../../util/intel-pt.h" #include "../../util/intel-pt.h"
#include "../../util/util.h"
#define KiB(x) ((x) * 1024) #define KiB(x) ((x) * 1024)
#define MiB(x) ((x) * 1024 * 1024) #define MiB(x) ((x) * 1024 * 1024)

View File

@@ -2,9 +2,9 @@
#include <errno.h> #include <errno.h>
#include <string.h> #include <string.h>
#include <regex.h> #include <regex.h>
#include <linux/zalloc.h>
#include "../../perf.h" #include "../../perf.h"
#include "../../util/util.h"
#include "../../util/perf_regs.h" #include "../../util/perf_regs.h"
#include "../../util/debug.h" #include "../../util/debug.h"

View File

@@ -18,6 +18,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
#include <sys/time.h> #include <sys/time.h>
#include "../util/stat.h" #include "../util/stat.h"
@@ -214,7 +215,7 @@ int bench_futex_hash(int argc, const char **argv)
&worker[i].futex[nfutexes-1], t); &worker[i].futex[nfutexes-1], t);
} }
free(worker[i].futex); zfree(&worker[i].futex);
} }
print_summary(); print_summary();

View File

@@ -12,6 +12,7 @@
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
#include <errno.h> #include <errno.h>
#include "bench.h" #include "bench.h"
#include "futex.h" #include "futex.h"
@@ -217,7 +218,7 @@ int bench_futex_lock_pi(int argc, const char **argv)
worker[i].tid, worker[i].futex, t); worker[i].tid, worker[i].futex, t);
if (multi) if (multi)
free(worker[i].futex); zfree(&worker[i].futex);
} }
print_summary(); print_summary();

View File

@@ -9,7 +9,6 @@
#include "debug.h" #include "debug.h"
#include "../perf.h" #include "../perf.h"
#include "../util/util.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include "../util/header.h" #include "../util/header.h"
#include "../util/cloexec.h" #include "../util/cloexec.h"
@@ -24,6 +23,7 @@
#include <sys/time.h> #include <sys/time.h>
#include <errno.h> #include <errno.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#define K 1024 #define K 1024

View File

@@ -11,7 +11,6 @@
#include "../perf.h" #include "../perf.h"
#include "../builtin.h" #include "../builtin.h"
#include "../util/util.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include "../util/cloexec.h" #include "../util/cloexec.h"
@@ -35,6 +34,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/numa.h> #include <linux/numa.h>
#include <linux/zalloc.h>
#include <numa.h> #include <numa.h>
#include <numaif.h> #include <numaif.h>

View File

@@ -8,11 +8,11 @@
*/ */
#include "builtin.h" #include "builtin.h"
#include "util/util.h"
#include "util/color.h" #include "util/color.h"
#include <linux/list.h> #include <linux/list.h>
#include "util/cache.h" #include "util/cache.h"
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/zalloc.h>
#include "util/symbol.h" #include "util/symbol.h"
#include "perf.h" #include "perf.h"

View File

@@ -17,7 +17,6 @@
* epoll ... Event poll performance * epoll ... Event poll performance
*/ */
#include "perf.h" #include "perf.h"
#include "util/util.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include "builtin.h" #include "builtin.h"
#include "bench/bench.h" #include "bench/bench.h"
@@ -26,6 +25,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/prctl.h> #include <sys/prctl.h>
#include <linux/zalloc.h>
typedef int (*bench_fn_t)(int argc, const char **argv); typedef int (*bench_fn_t)(int argc, const char **argv);

View File

@@ -15,9 +15,9 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/zalloc.h>
#include <asm/bug.h> #include <asm/bug.h>
#include <sys/param.h> #include <sys/param.h>
#include "util.h"
#include "debug.h" #include "debug.h"
#include "builtin.h" #include "builtin.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>

View File

@@ -15,6 +15,7 @@
#include "util/debug.h" #include "util/debug.h"
#include "util/config.h" #include "util/config.h"
#include <linux/string.h> #include <linux/string.h>
#include <stdlib.h>
static bool use_system_config, use_user_config; static bool use_system_config, use_user_config;

View File

@@ -16,12 +16,12 @@
#include "util/tool.h" #include "util/tool.h"
#include "util/sort.h" #include "util/sort.h"
#include "util/symbol.h" #include "util/symbol.h"
#include "util/util.h"
#include "util/data.h" #include "util/data.h"
#include "util/config.h" #include "util/config.h"
#include "util/time-utils.h" #include "util/time-utils.h"
#include "util/annotate.h" #include "util/annotate.h"
#include "util/map.h" #include "util/map.h"
#include <linux/zalloc.h>
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>

View File

@@ -431,7 +431,7 @@ static void delete_filter_func(struct list_head *head)
struct filter_entry *pos, *tmp; struct filter_entry *pos, *tmp;
list_for_each_entry_safe(pos, tmp, head, list) { list_for_each_entry_safe(pos, tmp, head, list) {
list_del(&pos->list); list_del_init(&pos->list);
free(pos); free(pos);
} }
} }

View File

@@ -14,8 +14,10 @@
#include <subcmd/help.h> #include <subcmd/help.h>
#include "util/debug.h" #include "util/debug.h"
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>

View File

@@ -224,7 +224,7 @@ static int perf_event__repipe_sample(struct perf_tool *tool,
struct perf_evsel *evsel, struct perf_evsel *evsel,
struct machine *machine) struct machine *machine)
{ {
if (evsel->handler) { if (evsel && evsel->handler) {
inject_handler f = evsel->handler; inject_handler f = evsel->handler;
return f(tool, event, sample, evsel, machine); return f(tool, event, sample, evsel, machine);
} }

View File

@@ -4,7 +4,6 @@
#include "util/evlist.h" #include "util/evlist.h"
#include "util/evsel.h" #include "util/evsel.h"
#include "util/util.h"
#include "util/config.h" #include "util/config.h"
#include "util/map.h" #include "util/map.h"
#include "util/symbol.h" #include "util/symbol.h"
@@ -26,6 +25,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/zalloc.h>
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>
#include <locale.h> #include <locale.h>

View File

@@ -5,7 +5,6 @@
#include "util/evsel.h" #include "util/evsel.h"
#include "util/evlist.h" #include "util/evlist.h"
#include "util/term.h" #include "util/term.h"
#include "util/util.h"
#include "util/cache.h" #include "util/cache.h"
#include "util/symbol.h" #include "util/symbol.h"
#include "util/thread.h" #include "util/thread.h"
@@ -32,6 +31,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>
#include <poll.h> #include <poll.h>

View File

@@ -6,7 +6,6 @@
#include "util/evlist.h" #include "util/evlist.h"
#include "util/evsel.h" #include "util/evsel.h"
#include "util/util.h"
#include "util/cache.h" #include "util/cache.h"
#include "util/symbol.h" #include "util/symbol.h"
#include "util/thread.h" #include "util/thread.h"
@@ -30,6 +29,7 @@
#include <linux/list.h> #include <linux/list.h>
#include <linux/hash.h> #include <linux/hash.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
static struct perf_session *session; static struct perf_session *session;
@@ -454,7 +454,7 @@ broken:
/* broken lock sequence, discard it */ /* broken lock sequence, discard it */
ls->discard = 1; ls->discard = 1;
bad_hist[BROKEN_ACQUIRE]++; bad_hist[BROKEN_ACQUIRE]++;
list_del(&seq->list); list_del_init(&seq->list);
free(seq); free(seq);
goto end; goto end;
default: default:
@@ -515,7 +515,7 @@ static int report_lock_acquired_event(struct perf_evsel *evsel,
/* broken lock sequence, discard it */ /* broken lock sequence, discard it */
ls->discard = 1; ls->discard = 1;
bad_hist[BROKEN_ACQUIRED]++; bad_hist[BROKEN_ACQUIRED]++;
list_del(&seq->list); list_del_init(&seq->list);
free(seq); free(seq);
goto end; goto end;
default: default:
@@ -570,7 +570,7 @@ static int report_lock_contended_event(struct perf_evsel *evsel,
/* broken lock sequence, discard it */ /* broken lock sequence, discard it */
ls->discard = 1; ls->discard = 1;
bad_hist[BROKEN_CONTENDED]++; bad_hist[BROKEN_CONTENDED]++;
list_del(&seq->list); list_del_init(&seq->list);
free(seq); free(seq);
goto end; goto end;
default: default:
@@ -639,7 +639,7 @@ static int report_lock_release_event(struct perf_evsel *evsel,
ls->nr_release++; ls->nr_release++;
free_seq: free_seq:
list_del(&seq->list); list_del_init(&seq->list);
free(seq); free(seq);
end: end:
return 0; return 0;

View File

@@ -19,7 +19,6 @@
#include "perf.h" #include "perf.h"
#include "builtin.h" #include "builtin.h"
#include "namespaces.h" #include "namespaces.h"
#include "util/util.h"
#include "util/strlist.h" #include "util/strlist.h"
#include "util/strfilter.h" #include "util/strfilter.h"
#include "util/symbol.h" #include "util/symbol.h"
@@ -28,6 +27,7 @@
#include "util/probe-finder.h" #include "util/probe-finder.h"
#include "util/probe-event.h" #include "util/probe-event.h"
#include "util/probe-file.h" #include "util/probe-file.h"
#include <linux/zalloc.h>
#define DEFAULT_VAR_FILTER "!__k???tab_* & !__crc_*" #define DEFAULT_VAR_FILTER "!__k???tab_* & !__crc_*"
#define DEFAULT_FUNC_FILTER "!_*" #define DEFAULT_FUNC_FILTER "!_*"

View File

@@ -11,7 +11,6 @@
#include "perf.h" #include "perf.h"
#include "util/build-id.h" #include "util/build-id.h"
#include "util/util.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include "util/parse-events.h" #include "util/parse-events.h"
#include "util/config.h" #include "util/config.h"
@@ -54,6 +53,7 @@
#include <sys/mman.h> #include <sys/mman.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
struct switch_output { struct switch_output {
bool enabled; bool enabled;
@@ -1110,7 +1110,7 @@ record__switch_output(struct record *rec, bool at_exit)
rec->switch_output.cur_file = n; rec->switch_output.cur_file = n;
if (rec->switch_output.filenames[n]) { if (rec->switch_output.filenames[n]) {
remove(rec->switch_output.filenames[n]); remove(rec->switch_output.filenames[n]);
free(rec->switch_output.filenames[n]); zfree(&rec->switch_output.filenames[n]);
} }
rec->switch_output.filenames[n] = new_filename; rec->switch_output.filenames[n] = new_filename;
} else { } else {

View File

@@ -8,7 +8,6 @@
*/ */
#include "builtin.h" #include "builtin.h"
#include "util/util.h"
#include "util/config.h" #include "util/config.h"
#include "util/annotate.h" #include "util/annotate.h"
@@ -16,6 +15,7 @@
#include <linux/list.h> #include <linux/list.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/zalloc.h>
#include "util/map.h" #include "util/map.h"
#include "util/symbol.h" #include "util/symbol.h"
#include "util/callchain.h" #include "util/callchain.h"
@@ -298,7 +298,7 @@ static int process_read_event(struct perf_tool *tool,
struct report *rep = container_of(tool, struct report, tool); struct report *rep = container_of(tool, struct report, tool);
if (rep->show_threads) { if (rep->show_threads) {
const char *name = evsel ? perf_evsel__name(evsel) : "unknown"; const char *name = perf_evsel__name(evsel);
int err = perf_read_values_add_value(&rep->show_threads_values, int err = perf_read_values_add_value(&rep->show_threads_values,
event->read.pid, event->read.tid, event->read.pid, event->read.tid,
evsel->idx, evsel->idx,

View File

@@ -2,7 +2,6 @@
#include "builtin.h" #include "builtin.h"
#include "perf.h" #include "perf.h"
#include "util/util.h"
#include "util/evlist.h" #include "util/evlist.h"
#include "util/cache.h" #include "util/cache.h"
#include "util/evsel.h" #include "util/evsel.h"
@@ -26,6 +25,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include <sys/prctl.h> #include <sys/prctl.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <inttypes.h> #include <inttypes.h>

View File

@@ -14,7 +14,6 @@
#include "util/symbol.h" #include "util/symbol.h"
#include "util/thread.h" #include "util/thread.h"
#include "util/trace-event.h" #include "util/trace-event.h"
#include "util/util.h"
#include "util/evlist.h" #include "util/evlist.h"
#include "util/evsel.h" #include "util/evsel.h"
#include "util/sort.h" #include "util/sort.h"
@@ -34,6 +33,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include "asm/bug.h" #include "asm/bug.h"
#include "util/mem-events.h" #include "util/mem-events.h"
@@ -3752,7 +3752,8 @@ int cmd_script(int argc, const char **argv)
goto out_delete; goto out_delete;
uname(&uts); uname(&uts);
if (!strcmp(uts.machine, session->header.env.arch) || if (data.is_pipe || /* assume pipe_mode indicates native_arch */
!strcmp(uts.machine, session->header.env.arch) ||
(!strcmp(uts.machine, "x86_64") && (!strcmp(uts.machine, "x86_64") &&
!strcmp(session->header.env.arch, "i386"))) !strcmp(session->header.env.arch, "i386")))
native_arch = true; native_arch = true;

View File

@@ -43,7 +43,6 @@
#include "perf.h" #include "perf.h"
#include "builtin.h" #include "builtin.h"
#include "util/cgroup.h" #include "util/cgroup.h"
#include "util/util.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include "util/parse-events.h" #include "util/parse-events.h"
#include "util/pmu.h" #include "util/pmu.h"
@@ -67,6 +66,7 @@
#include "asm/bug.h" #include "asm/bug.h"
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#include <api/fs/fs.h> #include <api/fs/fs.h>
#include <errno.h> #include <errno.h>
#include <signal.h> #include <signal.h>
@@ -1349,8 +1349,8 @@ static int add_default_attributes(void)
fprintf(stderr, fprintf(stderr,
"Cannot set up top down events %s: %d\n", "Cannot set up top down events %s: %d\n",
str, err); str, err);
free(str);
parse_events_print_error(&errinfo, str); parse_events_print_error(&errinfo, str);
free(str);
return -1; return -1;
} }
} else { } else {
@@ -1586,7 +1586,7 @@ static void runtime_stat_delete(struct perf_stat_config *config)
for (i = 0; i < config->stats_num; i++) for (i = 0; i < config->stats_num; i++)
runtime_stat__exit(&config->stats[i]); runtime_stat__exit(&config->stats[i]);
free(config->stats); zfree(&config->stats);
} }
static const char * const stat_report_usage[] = { static const char * const stat_report_usage[] = {
@@ -2003,7 +2003,7 @@ int cmd_stat(int argc, const char **argv)
perf_stat__exit_aggr_mode(); perf_stat__exit_aggr_mode();
perf_evlist__free_stats(evsel_list); perf_evlist__free_stats(evsel_list);
out: out:
free(stat_config.walltime_run); zfree(&stat_config.walltime_run);
if (smi_cost && smi_reset) if (smi_cost && smi_reset)
sysfs__write_int(FREEZE_ON_SMI_PATH, 0); sysfs__write_int(FREEZE_ON_SMI_PATH, 0);

View File

@@ -13,9 +13,6 @@
#include <traceevent/event-parse.h> #include <traceevent/event-parse.h>
#include "builtin.h" #include "builtin.h"
#include "util/util.h"
#include "util/color.h" #include "util/color.h"
#include <linux/list.h> #include <linux/list.h>
#include "util/cache.h" #include "util/cache.h"
@@ -24,6 +21,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#include "util/symbol.h" #include "util/symbol.h"
#include "util/thread.h" #include "util/thread.h"
#include "util/callchain.h" #include "util/callchain.h"

View File

@@ -101,7 +101,7 @@ static void perf_top__resize(struct perf_top *top)
static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he) static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
{ {
struct perf_evsel *evsel = hists_to_evsel(he->hists); struct perf_evsel *evsel;
struct symbol *sym; struct symbol *sym;
struct annotation *notes; struct annotation *notes;
struct map *map; struct map *map;
@@ -110,6 +110,8 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
if (!he || !he->ms.sym) if (!he || !he->ms.sym)
return -1; return -1;
evsel = hists_to_evsel(he->hists);
sym = he->ms.sym; sym = he->ms.sym;
map = he->ms.map; map = he->ms.map;
@@ -226,7 +228,7 @@ static void perf_top__record_precise_ip(struct perf_top *top,
static void perf_top__show_details(struct perf_top *top) static void perf_top__show_details(struct perf_top *top)
{ {
struct hist_entry *he = top->sym_filter_entry; struct hist_entry *he = top->sym_filter_entry;
struct perf_evsel *evsel = hists_to_evsel(he->hists); struct perf_evsel *evsel;
struct annotation *notes; struct annotation *notes;
struct symbol *symbol; struct symbol *symbol;
int more; int more;
@@ -234,6 +236,8 @@ static void perf_top__show_details(struct perf_top *top)
if (!he) if (!he)
return; return;
evsel = hists_to_evsel(he->hists);
symbol = he->ms.sym; symbol = he->ms.sym;
notes = symbol__annotation(symbol); notes = symbol__annotation(symbol);

View File

@@ -61,6 +61,7 @@
#include <linux/random.h> #include <linux/random.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#include <fcntl.h> #include <fcntl.h>
#include <sys/sysmacros.h> #include <sys/sysmacros.h>
@@ -1038,10 +1039,10 @@ static struct thread_trace *thread_trace__new(void)
{ {
struct thread_trace *ttrace = zalloc(sizeof(struct thread_trace)); struct thread_trace *ttrace = zalloc(sizeof(struct thread_trace));
if (ttrace) if (ttrace) {
ttrace->files.max = -1; ttrace->files.max = -1;
ttrace->syscall_stats = intlist__new(NULL);
ttrace->syscall_stats = intlist__new(NULL); }
return ttrace; return ttrace;
} }

View File

@@ -18,7 +18,6 @@
#include "util/bpf-loader.h" #include "util/bpf-loader.h"
#include "util/debug.h" #include "util/debug.h"
#include "util/event.h" #include "util/event.h"
#include "util/util.h"
#include <api/fs/fs.h> #include <api/fs/fs.h>
#include <api/fs/tracing_path.h> #include <api/fs/tracing_path.h>
#include <errno.h> #include <errno.h>
@@ -30,6 +29,7 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
const char perf_usage_string[] = const char perf_usage_string[] =
"perf [--version] [--help] [OPTIONS] COMMAND [ARGS]"; "perf [--version] [--help] [OPTIONS] COMMAND [ARGS]";

View File

@@ -407,7 +407,7 @@ static void free_arch_std_events(void)
list_for_each_entry_safe(es, next, &arch_std_events, list) { list_for_each_entry_safe(es, next, &arch_std_events, list) {
FOR_ALL_EVENT_STRUCT_FIELDS(FREE_EVENT_FIELD); FOR_ALL_EVENT_STRUCT_FIELDS(FREE_EVENT_FIELD);
list_del(&es->list); list_del_init(&es->list);
free(es); free(es);
} }
} }

View File

@@ -898,11 +898,11 @@ def trace_end():
if is_table_empty("ptwrite"): if is_table_empty("ptwrite"):
drop("ptwrite") drop("ptwrite")
if is_table_empty("mwait") and is_table_empty("pwre") and is_table_empty("exstop") and is_table_empty("pwrx"): if is_table_empty("mwait") and is_table_empty("pwre") and is_table_empty("exstop") and is_table_empty("pwrx"):
do_query(query, 'DROP VIEW power_events_view');
drop("mwait") drop("mwait")
drop("pwre") drop("pwre")
drop("exstop") drop("exstop")
drop("pwrx") drop("pwrx")
do_query(query, 'DROP VIEW power_events_view');
if is_table_empty("cbr"): if is_table_empty("cbr"):
drop("cbr") drop("cbr")

View File

@@ -608,11 +608,11 @@ def trace_end():
if is_table_empty("ptwrite"): if is_table_empty("ptwrite"):
drop("ptwrite") drop("ptwrite")
if is_table_empty("mwait") and is_table_empty("pwre") and is_table_empty("exstop") and is_table_empty("pwrx"): if is_table_empty("mwait") and is_table_empty("pwre") and is_table_empty("exstop") and is_table_empty("pwrx"):
do_query(query, 'DROP VIEW power_events_view');
drop("mwait") drop("mwait")
drop("pwre") drop("pwre")
drop("exstop") drop("exstop")
drop("pwrx") drop("pwrx")
do_query(query, 'DROP VIEW power_events_view');
if is_table_empty("cbr"): if is_table_empty("cbr"):
drop("cbr") drop("cbr")

View File

@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/zalloc.h>
#include <inttypes.h> #include <inttypes.h>
#include <unistd.h> #include <unistd.h>
#include "tests.h" #include "tests.h"
@@ -115,8 +116,8 @@ noinline int test_dwarf_unwind__thread(struct thread *thread)
} }
out: out:
free(sample.user_stack.data); zfree(&sample.user_stack.data);
free(sample.user_regs.regs); zfree(&sample.user_regs.regs);
return err; return err;
} }

View File

@@ -3,6 +3,7 @@
#include "util/expr.h" #include "util/expr.h"
#include "tests.h" #include "tests.h"
#include <stdlib.h> #include <stdlib.h>
#include <linux/zalloc.h>
static int test(struct parse_ctx *ctx, const char *e, double val2) static int test(struct parse_ctx *ctx, const char *e, double val2)
{ {
@@ -58,7 +59,7 @@ int test__expr(struct test *t __maybe_unused, int subtest __maybe_unused)
TEST_ASSERT_VAL("find other", other[3] == NULL); TEST_ASSERT_VAL("find other", other[3] == NULL);
for (i = 0; i < num_other; i++) for (i = 0; i < num_other; i++)
free((void *)other[i]); zfree(&other[i]);
free((void *)other); free((void *)other);
return 0; return 0;

View File

@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <util/llvm-utils.h> #include <util/llvm-utils.h>
#include <util/cache.h> #include <util/cache.h>

View File

@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/bitmap.h> #include <linux/bitmap.h>
#include <linux/zalloc.h>
#include "cpumap.h" #include "cpumap.h"
#include "mem2node.h" #include "mem2node.h"
#include "tests.h" #include "tests.h"
@@ -67,7 +68,7 @@ int test__mem2node(struct test *t __maybe_unused, int subtest __maybe_unused)
T("failed: mem2node__node", -1 == mem2node__node(&map, 0x1050)); T("failed: mem2node__node", -1 == mem2node__node(&map, 0x1050));
for (i = 0; i < ARRAY_SIZE(nodes); i++) for (i = 0; i < ARRAY_SIZE(nodes); i++)
free(nodes[i].set); zfree(&nodes[i].set);
mem2node__exit(&map); mem2node__exit(&map);
return 0; return 0;

View File

@@ -53,7 +53,7 @@ static void *thread_fn(void *arg)
{ {
struct thread_data *td = arg; struct thread_data *td = arg;
ssize_t ret; ssize_t ret;
int go; int go = 0;
if (thread_init(td)) if (thread_init(td))
return NULL; return NULL;

View File

@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <stdbool.h> #include <stdbool.h>
#include <inttypes.h> #include <inttypes.h>
#include <stdlib.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>

View File

@@ -4,6 +4,7 @@
#include <errno.h> #include <errno.h>
#include <time.h> #include <time.h>
#include <stdlib.h> #include <stdlib.h>
#include <linux/zalloc.h>
#include "parse-events.h" #include "parse-events.h"
#include "evlist.h" #include "evlist.h"
@@ -237,7 +238,7 @@ static void free_event_nodes(struct list_head *events)
while (!list_empty(events)) { while (!list_empty(events)) {
node = list_entry(events->next, struct event_node, list); node = list_entry(events->next, struct event_node, list);
list_del(&node->list); list_del_init(&node->list);
free(node); free(node);
} }
} }

View File

@@ -6,6 +6,7 @@
#include "tests.h" #include "tests.h"
#include "thread_map.h" #include "thread_map.h"
#include "debug.h" #include "debug.h"
#include <linux/zalloc.h>
#define NAME (const char *) "perf" #define NAME (const char *) "perf"
#define NAMEUL (unsigned long) NAME #define NAMEUL (unsigned long) NAME
@@ -133,7 +134,7 @@ int test__thread_map_remove(struct test *test __maybe_unused, int subtest __mayb
thread_map__remove(threads, 0)); thread_map__remove(threads, 0));
for (i = 0; i < threads->nr; i++) for (i = 0; i < threads->nr; i++)
free(threads->map[i].comm); zfree(&threads->map[i].comm);
free(threads); free(threads);
return 0; return 0;

View File

@@ -3,6 +3,7 @@
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <inttypes.h> #include <inttypes.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include "map.h" #include "map.h"
#include "symbol.h" #include "symbol.h"
#include "util.h" #include "util.h"

View File

@@ -1,5 +1,4 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "../util.h"
#include "../string2.h" #include "../string2.h"
#include "../config.h" #include "../config.h"
#include "../../perf.h" #include "../../perf.h"
@@ -17,6 +16,7 @@
#include "keysyms.h" #include "keysyms.h"
#include "../color.h" #include "../color.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/zalloc.h>
static int ui_browser__percent_color(struct ui_browser *browser, static int ui_browser__percent_color(struct ui_browser *browser,
double percent, bool current) double percent, bool current)

View File

@@ -4,6 +4,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <stdarg.h> #include <stdarg.h>
#include <sys/types.h>
#define HE_COLORSET_TOP 50 #define HE_COLORSET_TOP 50
#define HE_COLORSET_MEDIUM 51 #define HE_COLORSET_MEDIUM 51

View File

@@ -1,5 +1,4 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "../../util/util.h"
#include "../browser.h" #include "../browser.h"
#include "../helpline.h" #include "../helpline.h"
#include "../ui.h" #include "../ui.h"
@@ -15,6 +14,7 @@
#include <pthread.h> #include <pthread.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/zalloc.h>
#include <sys/ttydefaults.h> #include <sys/ttydefaults.h>
#include <asm/bug.h> #include <asm/bug.h>

View File

@@ -9,6 +9,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <sys/ttydefaults.h> #include <sys/ttydefaults.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
#include "../../util/callchain.h" #include "../../util/callchain.h"
#include "../../util/evsel.h" #include "../../util/evsel.h"
@@ -18,7 +19,6 @@
#include "../../util/symbol.h" #include "../../util/symbol.h"
#include "../../util/pstack.h" #include "../../util/pstack.h"
#include "../../util/sort.h" #include "../../util/sort.h"
#include "../../util/util.h"
#include "../../util/top.h" #include "../../util/top.h"
#include "../../util/thread.h" #include "../../util/thread.h"
#include "../../arch/common.h" #include "../../arch/common.h"
@@ -639,7 +639,11 @@ int hist_browser__run(struct hist_browser *browser, const char *help,
switch (key) { switch (key) {
case K_TIMER: { case K_TIMER: {
u64 nr_entries; u64 nr_entries;
hbt->timer(hbt->arg);
WARN_ON_ONCE(!hbt);
if (hbt)
hbt->timer(hbt->arg);
if (hist_browser__has_filter(browser) || if (hist_browser__has_filter(browser) ||
symbol_conf.report_hierarchy) symbol_conf.report_hierarchy)
@@ -2821,7 +2825,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
{ {
struct hists *hists = evsel__hists(evsel); struct hists *hists = evsel__hists(evsel);
struct hist_browser *browser = perf_evsel_browser__new(evsel, hbt, env, annotation_opts); struct hist_browser *browser = perf_evsel_browser__new(evsel, hbt, env, annotation_opts);
struct branch_info *bi; struct branch_info *bi = NULL;
#define MAX_OPTIONS 16 #define MAX_OPTIONS 16
char *options[MAX_OPTIONS]; char *options[MAX_OPTIONS];
struct popup_action actions[MAX_OPTIONS]; struct popup_action actions[MAX_OPTIONS];
@@ -3087,7 +3091,9 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
goto skip_annotation; goto skip_annotation;
if (sort__mode == SORT_MODE__BRANCH) { if (sort__mode == SORT_MODE__BRANCH) {
bi = browser->he_selection->branch_info;
if (browser->he_selection)
bi = browser->he_selection->branch_info;
if (bi == NULL) if (bi == NULL)
goto skip_annotation; goto skip_annotation;
@@ -3271,7 +3277,8 @@ static int perf_evsel_menu__run(struct perf_evsel_menu *menu,
switch (key) { switch (key) {
case K_TIMER: case K_TIMER:
hbt->timer(hbt->arg); if (hbt)
hbt->timer(hbt->arg);
if (!menu->lost_events_warned && if (!menu->lost_events_warned &&
menu->lost_events && menu->lost_events &&

View File

@@ -2,6 +2,7 @@
#include <elf.h> #include <elf.h>
#include <inttypes.h> #include <inttypes.h>
#include <sys/ttydefaults.h> #include <sys/ttydefaults.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include "../../util/util.h" #include "../../util/util.h"

View File

@@ -1,6 +1,5 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
/* Display a menu with individual samples to browse with perf script */ /* Display a menu with individual samples to browse with perf script */
#include "util.h"
#include "hist.h" #include "hist.h"
#include "evsel.h" #include "evsel.h"
#include "hists.h" #include "hists.h"
@@ -8,6 +7,7 @@
#include "config.h" #include "config.h"
#include "time-utils.h" #include "time-utils.h"
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
static u64 context_len = 10 * NSEC_PER_MSEC; static u64 context_len = 10 * NSEC_PER_MSEC;
@@ -46,14 +46,14 @@ int res_sample_browse(struct res_sample *res_samples, int num_res,
if (asprintf(&names[i], "%s: CPU %d tid %d", tbuf, if (asprintf(&names[i], "%s: CPU %d tid %d", tbuf,
res_samples[i].cpu, res_samples[i].tid) < 0) { res_samples[i].cpu, res_samples[i].tid) < 0) {
while (--i >= 0) while (--i >= 0)
free(names[i]); zfree(&names[i]);
free(names); free(names);
return -1; return -1;
} }
} }
choice = ui__popup_menu(num_res, names); choice = ui__popup_menu(num_res, names);
for (i = 0; i < num_res; i++) for (i = 0; i < num_res; i++)
free(names[i]); zfree(&names[i]);
free(names); free(names);
if (choice < 0 || choice >= num_res) if (choice < 0 || choice >= num_res)

View File

@@ -1,12 +1,12 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "../../util/sort.h" #include "../../util/sort.h"
#include "../../util/util.h"
#include "../../util/hist.h" #include "../../util/hist.h"
#include "../../util/debug.h" #include "../../util/debug.h"
#include "../../util/symbol.h" #include "../../util/symbol.h"
#include "../browser.h" #include "../browser.h"
#include "../libslang.h" #include "../libslang.h"
#include "config.h" #include "config.h"
#include <linux/zalloc.h>
#define SCRIPT_NAMELEN 128 #define SCRIPT_NAMELEN 128
#define SCRIPT_MAX_NO 64 #define SCRIPT_MAX_NO 64
@@ -142,7 +142,7 @@ static int list_scripts(char *script_name, bool *custom,
out: out:
free(buf); free(buf);
for (i = 0; i < max_std; i++) for (i = 0; i < max_std; i++)
free(paths[i]); zfree(&paths[i]);
return ret; return ret;
} }

View File

@@ -152,7 +152,7 @@ static int perf_gtk__annotate_symbol(GtkWidget *window, struct symbol *sym,
gtk_container_add(GTK_CONTAINER(window), view); gtk_container_add(GTK_CONTAINER(window), view);
list_for_each_entry_safe(pos, n, &notes->src->source, al.node) { list_for_each_entry_safe(pos, n, &notes->src->source, al.node) {
list_del(&pos->al.node); list_del_init(&pos->al.node);
disasm_line__free(pos); disasm_line__free(pos);
} }

View File

@@ -1,11 +1,10 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "../util.h" #include "../util.h"
#include "../../util/util.h"
#include "../../util/debug.h" #include "../../util/debug.h"
#include "gtk.h" #include "gtk.h"
#include <string.h> #include <string.h>
#include <linux/zalloc.h>
struct perf_gtk_context *pgctx; struct perf_gtk_context *pgctx;

View File

@@ -3,7 +3,6 @@
#include <linux/string.h> #include <linux/string.h>
#include "../../util/callchain.h" #include "../../util/callchain.h"
#include "../../util/util.h"
#include "../../util/hist.h" #include "../../util/hist.h"
#include "../../util/map.h" #include "../../util/map.h"
#include "../../util/map_groups.h" #include "../../util/map_groups.h"
@@ -14,6 +13,7 @@
#include "../../util/string2.h" #include "../../util/string2.h"
#include "../../util/thread.h" #include "../../util/thread.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/zalloc.h>
static size_t callchain__fprintf_left_margin(FILE *fp, int left_margin) static size_t callchain__fprintf_left_margin(FILE *fp, int left_margin)
{ {

View File

@@ -2,6 +2,7 @@
#include <errno.h> #include <errno.h>
#include <signal.h> #include <signal.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#ifdef HAVE_BACKTRACE_SUPPORT #ifdef HAVE_BACKTRACE_SUPPORT
#include <execinfo.h> #include <execinfo.h>

View File

@@ -1,8 +1,8 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "../../util/util.h"
#include <signal.h> #include <signal.h>
#include <stdbool.h> #include <stdbool.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include <sys/ttydefaults.h> #include <sys/ttydefaults.h>
#include "../../util/cache.h" #include "../../util/cache.h"

View File

@@ -25,6 +25,7 @@ perf-y += rbtree.o
perf-y += libstring.o perf-y += libstring.o
perf-y += bitmap.o perf-y += bitmap.o
perf-y += hweight.o perf-y += hweight.o
perf-y += zalloc.o
perf-y += smt.o perf-y += smt.o
perf-y += strbuf.o perf-y += strbuf.o
perf-y += string.o perf-y += string.o
@@ -241,3 +242,7 @@ $(OUTPUT)util/hweight.o: ../lib/hweight.c FORCE
$(OUTPUT)util/vsprintf.o: ../lib/vsprintf.c FORCE $(OUTPUT)util/vsprintf.o: ../lib/vsprintf.c FORCE
$(call rule_mkdir) $(call rule_mkdir)
$(call if_changed_dep,cc_o_c) $(call if_changed_dep,cc_o_c)
$(OUTPUT)util/zalloc.o: ../lib/zalloc.c FORCE
$(call rule_mkdir)
$(call if_changed_dep,cc_o_c)

View File

@@ -1119,16 +1119,14 @@ static int disasm_line__parse(char *line, const char **namep, char **rawp)
*namep = strdup(name); *namep = strdup(name);
if (*namep == NULL) if (*namep == NULL)
goto out_free_name; goto out;
(*rawp)[0] = tmp; (*rawp)[0] = tmp;
*rawp = skip_spaces(*rawp); *rawp = skip_spaces(*rawp);
return 0; return 0;
out_free_name: out:
free((void *)namep);
*namep = NULL;
return -1; return -1;
} }
@@ -1237,8 +1235,7 @@ void disasm_line__free(struct disasm_line *dl)
dl->ins.ops->free(&dl->ops); dl->ins.ops->free(&dl->ops);
else else
ins__delete(&dl->ops); ins__delete(&dl->ops);
free((void *)dl->ins.name); zfree(&dl->ins.name);
dl->ins.name = NULL;
annotation_line__delete(&dl->al); annotation_line__delete(&dl->al);
} }
@@ -1589,7 +1586,7 @@ static void delete_last_nop(struct symbol *sym)
return; return;
} }
list_del(&dl->al.node); list_del_init(&dl->al.node);
disasm_line__free(dl); disasm_line__free(dl);
} }
} }
@@ -2466,7 +2463,7 @@ void annotated_source__purge(struct annotated_source *as)
struct annotation_line *al, *n; struct annotation_line *al, *n;
list_for_each_entry_safe(al, n, &as->source, node) { list_for_each_entry_safe(al, n, &as->source, node) {
list_del(&al->node); list_del_init(&al->node);
disasm_line__free(disasm_line(al)); disasm_line__free(disasm_line(al));
} }
} }

View File

@@ -12,6 +12,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include "cpumap.h" #include "cpumap.h"
#include "color.h" #include "color.h"
@@ -19,7 +20,6 @@
#include "evlist.h" #include "evlist.h"
#include "machine.h" #include "machine.h"
#include "session.h" #include "session.h"
#include "util.h"
#include "thread.h" #include "thread.h"
#include "debug.h" #include "debug.h"
#include "auxtrace.h" #include "auxtrace.h"

View File

@@ -24,9 +24,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/zalloc.h>
#include "../perf.h" #include "../perf.h"
#include "util.h"
#include "evlist.h" #include "evlist.h"
#include "dso.h" #include "dso.h"
#include "map.h" #include "map.h"
@@ -408,7 +408,7 @@ void auxtrace_queues__free(struct auxtrace_queues *queues)
buffer = list_entry(queues->queue_array[i].head.next, buffer = list_entry(queues->queue_array[i].head.next,
struct auxtrace_buffer, list); struct auxtrace_buffer, list);
list_del(&buffer->list); list_del_init(&buffer->list);
auxtrace_buffer__free(buffer); auxtrace_buffer__free(buffer);
} }
} }
@@ -612,7 +612,7 @@ void auxtrace_index__free(struct list_head *head)
struct auxtrace_index *auxtrace_index, *n; struct auxtrace_index *auxtrace_index, *n;
list_for_each_entry_safe(auxtrace_index, n, head, list) { list_for_each_entry_safe(auxtrace_index, n, head, list) {
list_del(&auxtrace_index->list); list_del_init(&auxtrace_index->list);
free(auxtrace_index); free(auxtrace_index);
} }
} }
@@ -1413,7 +1413,7 @@ void auxtrace_cache__free(struct auxtrace_cache *c)
return; return;
auxtrace_cache__drop(c); auxtrace_cache__drop(c);
free(c->hashtable); zfree(&c->hashtable);
free(c); free(c);
} }
@@ -1459,12 +1459,11 @@ void *auxtrace_cache__lookup(struct auxtrace_cache *c, u32 key)
static void addr_filter__free_str(struct addr_filter *filt) static void addr_filter__free_str(struct addr_filter *filt)
{ {
free(filt->str); zfree(&filt->str);
filt->action = NULL; filt->action = NULL;
filt->sym_from = NULL; filt->sym_from = NULL;
filt->sym_to = NULL; filt->sym_to = NULL;
filt->filename = NULL; filt->filename = NULL;
filt->str = NULL;
} }
static struct addr_filter *addr_filter__new(void) static struct addr_filter *addr_filter__new(void)

View File

@@ -12,6 +12,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/zalloc.h>
#include <errno.h> #include <errno.h>
#include "perf.h" #include "perf.h"
#include "debug.h" #include "debug.h"
@@ -828,7 +829,7 @@ static void
bpf_map_op__delete(struct bpf_map_op *op) bpf_map_op__delete(struct bpf_map_op *op)
{ {
if (!list_empty(&op->list)) if (!list_empty(&op->list))
list_del(&op->list); list_del_init(&op->list);
if (op->key_type == BPF_MAP_KEY_RANGES) if (op->key_type == BPF_MAP_KEY_RANGES)
parse_events__clear_array(&op->k.array); parse_events__clear_array(&op->k.array);
free(op); free(op);

View File

@@ -30,6 +30,7 @@
#include "strlist.h" #include "strlist.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/zalloc.h>
static bool no_buildid_cache; static bool no_buildid_cache;

View File

@@ -6,8 +6,9 @@
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/zalloc.h>
#include <stdlib.h>
#include "util.h"
#include "call-path.h" #include "call-path.h"
static void call_path__init(struct call_path *cp, struct call_path *parent, static void call_path__init(struct call_path *cp, struct call_path *parent,
@@ -39,7 +40,7 @@ void call_path_root__free(struct call_path_root *cpr)
struct call_path_block *pos, *n; struct call_path_block *pos, *n;
list_for_each_entry_safe(pos, n, &cpr->blocks, node) { list_for_each_entry_safe(pos, n, &cpr->blocks, node) {
list_del(&pos->node); list_del_init(&pos->node);
free(pos); free(pos);
} }
free(cpr); free(cpr);

View File

@@ -16,11 +16,11 @@
#include <stdbool.h> #include <stdbool.h>
#include <errno.h> #include <errno.h>
#include <math.h> #include <math.h>
#include <linux/zalloc.h>
#include "asm/bug.h" #include "asm/bug.h"
#include "hist.h" #include "hist.h"
#include "util.h"
#include "sort.h" #include "sort.h"
#include "machine.h" #include "machine.h"
#include "map.h" #include "map.h"
@@ -636,7 +636,7 @@ add_child(struct callchain_node *parent,
struct callchain_list *call, *tmp; struct callchain_list *call, *tmp;
list_for_each_entry_safe(call, tmp, &new->val, list) { list_for_each_entry_safe(call, tmp, &new->val, list) {
list_del(&call->list); list_del_init(&call->list);
map__zput(call->ms.map); map__zput(call->ms.map);
free(call); free(call);
} }
@@ -1002,7 +1002,7 @@ merge_chain_branch(struct callchain_cursor *cursor,
callchain_cursor_append(cursor, list->ip, callchain_cursor_append(cursor, list->ip,
list->ms.map, list->ms.sym, list->ms.map, list->ms.sym,
false, NULL, 0, 0, 0, list->srcline); false, NULL, 0, 0, 0, list->srcline);
list_del(&list->list); list_del_init(&list->list);
map__zput(list->ms.map); map__zput(list->ms.map);
free(list); free(list);
} }
@@ -1453,13 +1453,13 @@ static void free_callchain_node(struct callchain_node *node)
struct rb_node *n; struct rb_node *n;
list_for_each_entry_safe(list, tmp, &node->parent_val, list) { list_for_each_entry_safe(list, tmp, &node->parent_val, list) {
list_del(&list->list); list_del_init(&list->list);
map__zput(list->ms.map); map__zput(list->ms.map);
free(list); free(list);
} }
list_for_each_entry_safe(list, tmp, &node->val, list) { list_for_each_entry_safe(list, tmp, &node->val, list) {
list_del(&list->list); list_del_init(&list->list);
map__zput(list->ms.map); map__zput(list->ms.map);
free(list); free(list);
} }
@@ -1544,7 +1544,7 @@ int callchain_node__make_parent_list(struct callchain_node *node)
out: out:
list_for_each_entry_safe(chain, new, &head, list) { list_for_each_entry_safe(chain, new, &head, list) {
list_del(&chain->list); list_del_init(&chain->list);
map__zput(chain->ms.map); map__zput(chain->ms.map);
free(chain); free(chain);
} }

View File

@@ -1,11 +1,11 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "util.h"
#include "../perf.h" #include "../perf.h"
#include <subcmd/parse-options.h> #include <subcmd/parse-options.h>
#include "evsel.h" #include "evsel.h"
#include "cgroup.h" #include "cgroup.h"
#include "evlist.h" #include "evlist.h"
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/zalloc.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
@@ -124,7 +124,7 @@ static struct cgroup *cgroup__new(const char *name)
return cgroup; return cgroup;
out_free_name: out_free_name:
free(cgroup->name); zfree(&cgroup->name);
out_err: out_err:
free(cgroup); free(cgroup);
return NULL; return NULL;

View File

@@ -1,12 +1,12 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "comm.h" #include "comm.h"
#include "util.h"
#include <errno.h> #include <errno.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <linux/refcount.h> #include <linux/refcount.h>
#include <linux/rbtree.h> #include <linux/rbtree.h>
#include <linux/zalloc.h>
#include "rwsem.h" #include "rwsem.h"
struct comm_str { struct comm_str {

View File

@@ -11,7 +11,6 @@
*/ */
#include <errno.h> #include <errno.h>
#include <sys/param.h> #include <sys/param.h>
#include "util.h"
#include "cache.h" #include "cache.h"
#include "callchain.h" #include "callchain.h"
#include <subcmd/exec-cmd.h> #include <subcmd/exec-cmd.h>
@@ -23,7 +22,7 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/zalloc.h>
#include <linux/ctype.h> #include <linux/ctype.h>
#define MAXNAME (256) #define MAXNAME (256)

View File

@@ -3,7 +3,7 @@
#include <stdlib.h> #include <stdlib.h>
#include "evsel.h" #include "evsel.h"
#include "counts.h" #include "counts.h"
#include "util.h" #include <linux/zalloc.h>
struct perf_counts *perf_counts__new(int ncpus, int nthreads) struct perf_counts *perf_counts__new(int ncpus, int nthreads)
{ {

View File

@@ -1,5 +1,4 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "util.h"
#include <api/fs/fs.h> #include <api/fs/fs.h>
#include "../perf.h" #include "../perf.h"
#include "cpumap.h" #include "cpumap.h"
@@ -11,6 +10,7 @@
#include "asm/bug.h" #include "asm/bug.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/zalloc.h>
static int max_cpu_num; static int max_cpu_num;
static int max_present_cpu_num; static int max_present_cpu_num;

View File

@@ -2,11 +2,12 @@
#include <sys/param.h> #include <sys/param.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <inttypes.h> #include <inttypes.h>
#include <stdlib.h>
#include <api/fs/fs.h> #include <api/fs/fs.h>
#include <linux/zalloc.h>
#include "cputopo.h" #include "cputopo.h"
#include "cpumap.h" #include "cpumap.h"
#include "util.h"
#include "env.h" #include "env.h"
#define CORE_SIB_FMT \ #define CORE_SIB_FMT \
@@ -343,7 +344,7 @@ void numa_topology__delete(struct numa_topology *tp)
u32 i; u32 i;
for (i = 0; i < tp->nr; i++) for (i = 0; i < tp->nr; i++)
free(tp->nodes[i].cpus); zfree(&tp->nodes[i].cpus);
free(tp); free(tp);
} }

View File

@@ -8,6 +8,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/list.h> #include <linux/list.h>
#include <linux/zalloc.h>
#include <stdlib.h> #include <stdlib.h>
#include <opencsd/c_api/opencsd_c_api.h> #include <opencsd/c_api/opencsd_c_api.h>
#include <opencsd/etmv4/trc_pkt_types_etmv4.h> #include <opencsd/etmv4/trc_pkt_types_etmv4.h>

View File

@@ -11,6 +11,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/zalloc.h>
#include <opencsd/ocsd_if_types.h> #include <opencsd/ocsd_if_types.h>
#include <stdlib.h> #include <stdlib.h>
@@ -554,8 +555,7 @@ static void cs_etm__free_traceid_queues(struct cs_etm_queue *etmq)
etmq->traceid_queues_list = NULL; etmq->traceid_queues_list = NULL;
/* finally free the traceid_queues array */ /* finally free the traceid_queues array */
free(etmq->traceid_queues); zfree(&etmq->traceid_queues);
etmq->traceid_queues = NULL;
} }
static void cs_etm__free_queue(void *priv) static void cs_etm__free_queue(void *priv)
@@ -2538,7 +2538,7 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
return 0; return 0;
} }
if (session->itrace_synth_opts && session->itrace_synth_opts->set) { if (session->itrace_synth_opts->set) {
etm->synth_opts = *session->itrace_synth_opts; etm->synth_opts = *session->itrace_synth_opts;
} else { } else {
itrace_synth_opts__set_default(&etm->synth_opts, itrace_synth_opts__set_default(&etm->synth_opts,
@@ -2568,7 +2568,7 @@ err_free_etm:
err_free_metadata: err_free_metadata:
/* No need to check @metadata[j], free(NULL) is supported */ /* No need to check @metadata[j], free(NULL) is supported */
for (j = 0; j < num_cpu; j++) for (j = 0; j < num_cpu; j++)
free(metadata[j]); zfree(&metadata[j]);
zfree(&metadata); zfree(&metadata);
err_free_traceid_list: err_free_traceid_list:
intlist__delete(traceid_list); intlist__delete(traceid_list);

View File

@@ -10,6 +10,7 @@
#include <inttypes.h> #include <inttypes.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
#include <babeltrace/ctf-writer/writer.h> #include <babeltrace/ctf-writer/writer.h>
#include <babeltrace/ctf-writer/clock.h> #include <babeltrace/ctf-writer/clock.h>
#include <babeltrace/ctf-writer/stream.h> #include <babeltrace/ctf-writer/stream.h>
@@ -22,7 +23,6 @@
#include "asm/bug.h" #include "asm/bug.h"
#include "data-convert-bt.h" #include "data-convert-bt.h"
#include "session.h" #include "session.h"
#include "util.h"
#include "debug.h" #include "debug.h"
#include "tool.h" #include "tool.h"
#include "evlist.h" #include "evlist.h"
@@ -1353,7 +1353,7 @@ static void free_streams(struct ctf_writer *cw)
for (cpu = 0; cpu < cw->stream_cnt; cpu++) for (cpu = 0; cpu < cw->stream_cnt; cpu++)
ctf_stream__delete(cw->stream[cpu]); ctf_stream__delete(cw->stream[cpu]);
free(cw->stream); zfree(&cw->stream);
} }
static int ctf_writer__setup_env(struct ctf_writer *cw, static int ctf_writer__setup_env(struct ctf_writer *cw,

View File

@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/zalloc.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <errno.h> #include <errno.h>
@@ -20,7 +21,7 @@ static void close_dir(struct perf_data_file *files, int nr)
{ {
while (--nr >= 1) { while (--nr >= 1) {
close(files[nr].fd); close(files[nr].fd);
free(files[nr].path); zfree(&files[nr].path);
} }
free(files); free(files);
} }

View File

@@ -5,6 +5,7 @@
*/ */
#include <errno.h> #include <errno.h>
#include <stdlib.h>
#include "evsel.h" #include "evsel.h"
#include "machine.h" #include "machine.h"
@@ -13,11 +14,11 @@
#include "symbol.h" #include "symbol.h"
#include "map.h" #include "map.h"
#include "event.h" #include "event.h"
#include "util.h"
#include "thread-stack.h" #include "thread-stack.h"
#include "callchain.h" #include "callchain.h"
#include "call-path.h" #include "call-path.h"
#include "db-export.h" #include "db-export.h"
#include <linux/zalloc.h>
struct deferred_export { struct deferred_export {
struct list_head node; struct list_head node;
@@ -33,7 +34,7 @@ static int db_export__deferred(struct db_export *dbe)
de = list_entry(dbe->deferred.next, struct deferred_export, de = list_entry(dbe->deferred.next, struct deferred_export,
node); node);
err = dbe->export_comm(dbe, de->comm); err = dbe->export_comm(dbe, de->comm);
list_del(&de->node); list_del_init(&de->node);
free(de); free(de);
if (err) if (err)
return err; return err;
@@ -49,7 +50,7 @@ static void db_export__free_deferred(struct db_export *dbe)
while (!list_empty(&dbe->deferred)) { while (!list_empty(&dbe->deferred)) {
de = list_entry(dbe->deferred.next, struct deferred_export, de = list_entry(dbe->deferred.next, struct deferred_export,
node); node);
list_del(&de->node); list_del_init(&de->node);
free(de); free(de);
} }
} }

View File

@@ -7,6 +7,7 @@
#include <string.h> #include <string.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h> #include <sys/wait.h>
#include <api/debug.h> #include <api/debug.h>
#include <linux/time64.h> #include <linux/time64.h>

View File

@@ -1,14 +1,15 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <sys/types.h> #include <sys/types.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include "util.h"
#include "debug.h" #include "debug.h"
#include "symbol.h" #include "symbol.h"
#include "demangle-java.h" #include "demangle-java.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/kernel.h>
enum { enum {
MODE_PREFIX = 0, MODE_PREFIX = 0,

View File

@@ -2,6 +2,7 @@
#include <asm/bug.h> #include <asm/bug.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/zalloc.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <sys/types.h> #include <sys/types.h>
@@ -21,7 +22,7 @@
#include "dso.h" #include "dso.h"
#include "machine.h" #include "machine.h"
#include "auxtrace.h" #include "auxtrace.h"
#include "util.h" #include "util.h" /* O_CLOEXEC for older systems */
#include "debug.h" #include "debug.h"
#include "string2.h" #include "string2.h"
#include "vdso.h" #include "vdso.h"
@@ -433,7 +434,7 @@ static void dso__list_add(struct dso *dso)
static void dso__list_del(struct dso *dso) static void dso__list_del(struct dso *dso)
{ {
list_del(&dso->data.open_entry); list_del_init(&dso->data.open_entry);
WARN_ONCE(dso__data_open_cnt <= 0, WARN_ONCE(dso__data_open_cnt <= 0,
"DSO data fd counter out of bounds."); "DSO data fd counter out of bounds.");
dso__data_open_cnt--; dso__data_open_cnt--;

View File

@@ -6,7 +6,7 @@
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>
#include <stdbool.h> #include <stdbool.h>
#include "util.h" #include <stdlib.h>
#include "debug.h" #include "debug.h"
#include "dwarf-aux.h" #include "dwarf-aux.h"
#include "string2.h" #include "string2.h"

View File

@@ -2,11 +2,12 @@
#include "cpumap.h" #include "cpumap.h"
#include "env.h" #include "env.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include "util.h" #include <linux/zalloc.h>
#include "bpf-event.h" #include "bpf-event.h"
#include <errno.h> #include <errno.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <bpf/libbpf.h> #include <bpf/libbpf.h>
#include <stdlib.h>
struct perf_env perf_env; struct perf_env perf_env;
@@ -186,7 +187,7 @@ void perf_env__exit(struct perf_env *env)
zfree(&env->caches); zfree(&env->caches);
for (i = 0; i < env->nr_memory_nodes; i++) for (i = 0; i < env->nr_memory_nodes; i++)
free(env->memory_nodes[i].set); zfree(&env->memory_nodes[i].set);
zfree(&env->memory_nodes); zfree(&env->memory_nodes);
} }
@@ -286,9 +287,9 @@ int perf_env__nr_cpus_avail(struct perf_env *env)
void cpu_cache_level__free(struct cpu_cache_level *cache) void cpu_cache_level__free(struct cpu_cache_level *cache)
{ {
free(cache->type); zfree(&cache->type);
free(cache->map); zfree(&cache->map);
free(cache->size); zfree(&cache->size);
} }
/* /*

View File

@@ -11,6 +11,7 @@
#include <uapi/linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */ #include <uapi/linux/mman.h> /* To get things like MAP_HUGETLB even on older libc headers */
#include <api/fs/fs.h> #include <api/fs/fs.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <linux/zalloc.h>
#include "event.h" #include "event.h"
#include "debug.h" #include "debug.h"
#include "hist.h" #include "hist.h"
@@ -855,7 +856,7 @@ free_threads:
free(synthesize_threads); free(synthesize_threads);
free_dirent: free_dirent:
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
free(dirent[i]); zfree(&dirent[i]);
free(dirent); free(dirent);
return err; return err;

View File

@@ -5,7 +5,6 @@
* Parts came from builtin-{top,stat,record}.c, see those files for further * Parts came from builtin-{top,stat,record}.c, see those files for further
* copyright notes. * copyright notes.
*/ */
#include "util.h"
#include <api/fs/fs.h> #include <api/fs/fs.h>
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>
@@ -33,6 +32,7 @@
#include <linux/hash.h> #include <linux/hash.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/zalloc.h>
#ifdef LACKS_SIGQUEUE_PROTOTYPE #ifdef LACKS_SIGQUEUE_PROTOTYPE
int sigqueue(pid_t pid, int sig, const union sigval value); int sigqueue(pid_t pid, int sig, const union sigval value);

View File

@@ -17,6 +17,7 @@
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/zalloc.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <sys/types.h> #include <sys/types.h>
@@ -27,7 +28,6 @@
#include "event.h" #include "event.h"
#include "evsel.h" #include "evsel.h"
#include "evlist.h" #include "evlist.h"
#include "util.h"
#include "cpumap.h" #include "cpumap.h"
#include "thread_map.h" #include "thread_map.h"
#include "target.h" #include "target.h"
@@ -1298,7 +1298,7 @@ static void perf_evsel__free_config_terms(struct perf_evsel *evsel)
struct perf_evsel_config_term *term, *h; struct perf_evsel_config_term *term, *h;
list_for_each_entry_safe(term, h, &evsel->config_terms, list) { list_for_each_entry_safe(term, h, &evsel->config_terms, list) {
list_del(&term->list); list_del_init(&term->list);
free(term); free(term);
} }
} }

View File

@@ -1,8 +1,8 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: LGPL-2.1
// Copyright (C) 2018, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com> // Copyright (C) 2018, 2019 Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
// //
#ifndef HAVE_GET_CURRENT_DIR_NAME #ifndef HAVE_GET_CURRENT_DIR_NAME
#include "util.h" #include "get_current_dir_name.h"
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdlib.h> #include <stdlib.h>

View File

@@ -0,0 +1,8 @@
// SPDX-License-Identifier: LGPL-2.1
// Copyright (C) 2018, 2019 Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
//
#ifndef __PERF_GET_CURRENT_DIR_NAME_H
#ifndef HAVE_GET_CURRENT_DIR_NAME
char *get_current_dir_name(void);
#endif // HAVE_GET_CURRENT_DIR_NAME
#endif // __PERF_GET_CURRENT_DIR_NAME_H

View File

@@ -1,7 +1,6 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <errno.h> #include <errno.h>
#include <inttypes.h> #include <inttypes.h>
#include "util.h"
#include "string2.h" #include "string2.h"
#include <sys/param.h> #include <sys/param.h>
#include <sys/types.h> #include <sys/types.h>
@@ -15,6 +14,7 @@
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/zalloc.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <linux/time64.h> #include <linux/time64.h>
@@ -1052,7 +1052,7 @@ static int cpu_cache_level__read(struct cpu_cache_level *cache, u32 cpu, u16 lev
scnprintf(file, PATH_MAX, "%s/size", path); scnprintf(file, PATH_MAX, "%s/size", path);
if (sysfs__read_str(file, &cache->size, &len)) { if (sysfs__read_str(file, &cache->size, &len)) {
free(cache->type); zfree(&cache->type);
return -1; return -1;
} }
@@ -1061,8 +1061,8 @@ static int cpu_cache_level__read(struct cpu_cache_level *cache, u32 cpu, u16 lev
scnprintf(file, PATH_MAX, "%s/shared_cpu_list", path); scnprintf(file, PATH_MAX, "%s/shared_cpu_list", path);
if (sysfs__read_str(file, &cache->map, &len)) { if (sysfs__read_str(file, &cache->map, &len)) {
free(cache->map); zfree(&cache->map);
free(cache->type); zfree(&cache->type);
return -1; return -1;
} }

View File

@@ -3,9 +3,11 @@
#include "config.h" #include "config.h"
#include <poll.h> #include <poll.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <subcmd/help.h> #include <subcmd/help.h>
#include "../builtin.h" #include "../builtin.h"
#include "levenshtein.h" #include "levenshtein.h"
#include <linux/zalloc.h>
static int autocorrect; static int autocorrect;

View File

@@ -1,6 +1,5 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include "callchain.h" #include "callchain.h"
#include "util.h"
#include "build-id.h" #include "build-id.h"
#include "hist.h" #include "hist.h"
#include "map.h" #include "map.h"
@@ -20,6 +19,7 @@
#include <inttypes.h> #include <inttypes.h>
#include <sys/param.h> #include <sys/param.h>
#include <linux/time64.h> #include <linux/time64.h>
#include <linux/zalloc.h>
static bool hists__filter_entry_by_dso(struct hists *hists, static bool hists__filter_entry_by_dso(struct hists *hists,
struct hist_entry *he); struct hist_entry *he);
@@ -472,16 +472,16 @@ static int hist_entry__init(struct hist_entry *he,
return 0; return 0;
err_srcline: err_srcline:
free(he->srcline); zfree(&he->srcline);
err_rawdata: err_rawdata:
free(he->raw_data); zfree(&he->raw_data);
err_infos: err_infos:
if (he->branch_info) { if (he->branch_info) {
map__put(he->branch_info->from.map); map__put(he->branch_info->from.map);
map__put(he->branch_info->to.map); map__put(he->branch_info->to.map);
free(he->branch_info); zfree(&he->branch_info);
} }
if (he->mem_info) { if (he->mem_info) {
map__put(he->mem_info->iaddr.map); map__put(he->mem_info->iaddr.map);
@@ -489,7 +489,7 @@ err_infos:
} }
err: err:
map__zput(he->ms.map); map__zput(he->ms.map);
free(he->stat_acc); zfree(&he->stat_acc);
return -ENOMEM; return -ENOMEM;
} }
@@ -1254,10 +1254,10 @@ void hist_entry__delete(struct hist_entry *he)
zfree(&he->stat_acc); zfree(&he->stat_acc);
free_srcline(he->srcline); free_srcline(he->srcline);
if (he->srcfile && he->srcfile[0]) if (he->srcfile && he->srcfile[0])
free(he->srcfile); zfree(&he->srcfile);
free_callchain(he->callchain); free_callchain(he->callchain);
free(he->trace_output); zfree(&he->trace_output);
free(he->raw_data); zfree(&he->raw_data);
ops->free(he); ops->free(he);
} }
@@ -2741,10 +2741,10 @@ static void hists_evsel__exit(struct perf_evsel *evsel)
list_for_each_entry_safe(node, tmp, &hists->hpp_formats, list) { list_for_each_entry_safe(node, tmp, &hists->hpp_formats, list) {
perf_hpp_list__for_each_format_safe(&node->hpp, fmt, pos) { perf_hpp_list__for_each_format_safe(&node->hpp, fmt, pos) {
list_del(&fmt->list); list_del_init(&fmt->list);
free(fmt); free(fmt);
} }
list_del(&node->list); list_del_init(&node->list);
free(node); free(node);
} }
} }

View File

@@ -12,6 +12,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/log2.h> #include <linux/log2.h>
#include <linux/zalloc.h>
#include "cpumap.h" #include "cpumap.h"
#include "color.h" #include "color.h"
@@ -21,7 +22,6 @@
#include "map.h" #include "map.h"
#include "symbol.h" #include "symbol.h"
#include "session.h" #include "session.h"
#include "util.h"
#include "thread.h" #include "thread.h"
#include "thread-stack.h" #include "thread-stack.h"
#include "debug.h" #include "debug.h"
@@ -891,13 +891,12 @@ int intel_bts_process_auxtrace_info(union perf_event *event,
if (dump_trace) if (dump_trace)
return 0; return 0;
if (session->itrace_synth_opts && session->itrace_synth_opts->set) { if (session->itrace_synth_opts->set) {
bts->synth_opts = *session->itrace_synth_opts; bts->synth_opts = *session->itrace_synth_opts;
} else { } else {
itrace_synth_opts__set_default(&bts->synth_opts, itrace_synth_opts__set_default(&bts->synth_opts,
session->itrace_synth_opts->default_no_sample); session->itrace_synth_opts->default_no_sample);
if (session->itrace_synth_opts) bts->synth_opts.thread_stack =
bts->synth_opts.thread_stack =
session->itrace_synth_opts->thread_stack; session->itrace_synth_opts->thread_stack;
} }

View File

@@ -14,9 +14,9 @@
#include <stdint.h> #include <stdint.h>
#include <inttypes.h> #include <inttypes.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/zalloc.h>
#include "../cache.h" #include "../cache.h"
#include "../util.h"
#include "../auxtrace.h" #include "../auxtrace.h"
#include "intel-pt-insn-decoder.h" #include "intel-pt-insn-decoder.h"

View File

@@ -10,6 +10,7 @@
#include <errno.h> #include <errno.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/zalloc.h>
#include "../perf.h" #include "../perf.h"
#include "session.h" #include "session.h"
@@ -22,7 +23,6 @@
#include "evsel.h" #include "evsel.h"
#include "map.h" #include "map.h"
#include "color.h" #include "color.h"
#include "util.h"
#include "thread.h" #include "thread.h"
#include "thread-stack.h" #include "thread-stack.h"
#include "symbol.h" #include "symbol.h"
@@ -3210,7 +3210,7 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
goto err_delete_thread; goto err_delete_thread;
} }
if (session->itrace_synth_opts && session->itrace_synth_opts->set) { if (session->itrace_synth_opts->set) {
pt->synth_opts = *session->itrace_synth_opts; pt->synth_opts = *session->itrace_synth_opts;
} else { } else {
itrace_synth_opts__set_default(&pt->synth_opts, itrace_synth_opts__set_default(&pt->synth_opts,
@@ -3220,8 +3220,7 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
pt->synth_opts.branches = false; pt->synth_opts.branches = false;
pt->synth_opts.callchain = true; pt->synth_opts.callchain = true;
} }
if (session->itrace_synth_opts) pt->synth_opts.thread_stack =
pt->synth_opts.thread_stack =
session->itrace_synth_opts->thread_stack; session->itrace_synth_opts->thread_stack;
} }
@@ -3241,11 +3240,9 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
pt->cbr2khz = tsc_freq / pt->max_non_turbo_ratio / 1000; pt->cbr2khz = tsc_freq / pt->max_non_turbo_ratio / 1000;
} }
if (session->itrace_synth_opts) { err = intel_pt_setup_time_ranges(pt, session->itrace_synth_opts);
err = intel_pt_setup_time_ranges(pt, session->itrace_synth_opts); if (err)
if (err) goto err_delete_thread;
goto err_delete_thread;
}
if (pt->synth_opts.calls) if (pt->synth_opts.calls)
pt->branches_filter |= PERF_IP_FLAG_CALL | PERF_IP_FLAG_ASYNC | pt->branches_filter |= PERF_IP_FLAG_CALL | PERF_IP_FLAG_ASYNC |

View File

@@ -29,6 +29,7 @@
#include "../builtin.h" #include "../builtin.h"
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/zalloc.h>
struct jit_buf_desc { struct jit_buf_desc {
struct perf_data *output; struct perf_data *output;
@@ -431,14 +432,12 @@ static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr)
jd->unwinding_data, jd->eh_frame_hdr_size, jd->unwinding_size); jd->unwinding_data, jd->eh_frame_hdr_size, jd->unwinding_size);
if (jd->debug_data && jd->nr_debug_entries) { if (jd->debug_data && jd->nr_debug_entries) {
free(jd->debug_data); zfree(&jd->debug_data);
jd->debug_data = NULL;
jd->nr_debug_entries = 0; jd->nr_debug_entries = 0;
} }
if (jd->unwinding_data && jd->eh_frame_hdr_size) { if (jd->unwinding_data && jd->eh_frame_hdr_size) {
free(jd->unwinding_data); zfree(&jd->unwinding_data);
jd->unwinding_data = NULL;
jd->eh_frame_hdr_size = 0; jd->eh_frame_hdr_size = 0;
jd->unwinding_mapped_size = 0; jd->unwinding_mapped_size = 0;
jd->unwinding_size = 0; jd->unwinding_size = 0;

Some files were not shown because too many files have changed in this diff Show More