From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CFD92379EF5; Tue, 7 Apr 2026 20:39:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775594367; cv=none; b=ZG2B6yG4N8s+eLwUxF7wvaQbGk63lfFeV4sBH3mkRazWxV+NQxErtbSP/MMFrWn83O899wnfgaXJkYZcpk+GC3B6UnM9SBU48vD+m+23Dpi8bFTnbVulkD7LGwNEQeKNjE7N0qAFcA/K9RKLEcNWQJzClnQud1ZhxDI24Ilu99s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775594367; c=relaxed/simple; bh=1LI78gdizgwWvE47uk+lCxOrPHGwzya6bgmZVx7ofek=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=bU6XcCNRSr/hluGnK8O4Nx/55RZGIdomale/R7Nob6pk1qagi7zrOsbmtbfJBVHaW0sxKGaXEpNI1r/6xsVLESFAl+j/UIoruZ5TvXfB5FstLSoVkkM4PmB7D/V103EvNun/y0u2RMltC2xZAUlmWHvVCHOtay7C4w/2UKGBcJ0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f05WbsYC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="f05WbsYC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7E3DC2BC9E; Tue, 7 Apr 2026 20:39:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775594367; bh=1LI78gdizgwWvE47uk+lCxOrPHGwzya6bgmZVx7ofek=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=f05WbsYCT26mQy4NRXADhIsvuzKGmt0d0Lb24sTHUBkRPrZ0F6jTfTGdnXoRU13qc AbdQHAFtarWltSaVP9lXE2HqVxcirBhPpff/GHaPToNV09Xe41+pMPm5+hboC8NuIr Pn+mA/yPgjfdAWhJBBMQ/LGGNas89UzXfMQdEHB5Yq1lFfYnRCMugIcScCAqKwTv5F tv5ZeKq9e20TLRz+HAvGLq1ck/8bAtUuRHsyVt9p8raQzVgcPB58PNXwd7ktguVr/p m40ZbbnkYCffHXvr61ZWMSMVGVIGjwIgicZlDvIaFKXHj2lBPesvgqi7VNLa9xwX5H ENxMYG/htbeUA== Date: Tue, 7 Apr 2026 17:39:23 -0300 From: Arnaldo Carvalho de Melo To: Namhyung Kim Cc: Ingo Molnar , Thomas Gleixner , James Clark , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Arnaldo Carvalho de Melo Subject: Re: [PATCH 4/6] perf tools: Use calloc() were applicable Message-ID: References: <20260407195145.2372104-1-acme@kernel.org> <20260407195145.2372104-5-acme@kernel.org> Precedence: bulk X-Mailing-List: linux-perf-users@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260407195145.2372104-5-acme@kernel.org> On Tue, Apr 07, 2026 at 04:51:43PM -0300, Arnaldo Carvalho de Melo wrote: > From: Arnaldo Carvalho de Melo Typo on the subject: s/were/where/g > Instead of using zalloc(nr_entries * sizeof_entry) that is what calloc() > does. > > In some places where linux/zalloc.h isn't needed, remove it, add when > needed and was getting it indirectly. > > Signed-off-by: Arnaldo Carvalho de Melo > --- > tools/perf/arch/arm/util/auxtrace.c | 6 +++--- > tools/perf/arch/powerpc/util/auxtrace.c | 1 + > tools/perf/arch/x86/tests/amd-ibs-period.c | 3 +-- > tools/perf/arch/x86/tests/dwarf-unwind.c | 11 +---------- > tools/perf/arch/x86/util/pmu.c | 1 - > tools/perf/bench/numa.c | 13 ++++--------- > tools/perf/bench/sched-messaging.c | 2 +- > tools/perf/builtin-annotate.c | 1 - > tools/perf/builtin-c2c.c | 6 +++--- > tools/perf/builtin-diff.c | 2 +- > tools/perf/builtin-ftrace.c | 1 + > tools/perf/builtin-kwork.c | 2 +- > tools/perf/builtin-record.c | 10 +++++----- > tools/perf/builtin-sched.c | 6 +++--- > tools/perf/builtin-script.c | 8 ++++---- > tools/perf/builtin-stat.c | 2 +- > tools/perf/builtin-trace.c | 4 +--- > tools/perf/jvmti/libjvmti.c | 5 ++--- > tools/perf/tests/code-reading.c | 1 + > tools/perf/tests/thread-map.c | 1 - > tools/perf/util/annotate-arch/annotate-x86.c | 1 + > tools/perf/util/bpf-event.c | 2 +- > tools/perf/util/bpf_counter_cgroup.c | 1 - > tools/perf/util/data-convert-bt.c | 2 +- > tools/perf/util/data.c | 2 +- > tools/perf/util/db-export.c | 1 - > tools/perf/util/disasm.c | 1 + > tools/perf/util/event.c | 1 - > tools/perf/util/evlist.c | 3 +-- > tools/perf/util/header.c | 18 +++++++++--------- > tools/perf/util/hist.c | 2 +- > tools/perf/util/mem2node.c | 2 +- > tools/perf/util/pmus.c | 2 +- > tools/perf/util/powerpc-vpadtl.c | 1 + > tools/perf/util/probe-event.c | 17 ++++++++--------- > tools/perf/util/probe-file.c | 2 +- > tools/perf/util/probe-finder.c | 8 ++++---- > tools/perf/util/session.c | 2 +- > tools/perf/util/srcline.c | 1 + > tools/perf/util/stat-shadow.c | 1 - > tools/perf/util/unwind-libunwind-local.c | 1 - > tools/perf/util/values.c | 8 ++++---- > 42 files changed, 72 insertions(+), 93 deletions(-) > > diff --git a/tools/perf/arch/arm/util/auxtrace.c b/tools/perf/arch/arm/util/auxtrace.c > index eb6404267f1715a9..27bb14c8b880068a 100644 > --- a/tools/perf/arch/arm/util/auxtrace.c > +++ b/tools/perf/arch/arm/util/auxtrace.c > @@ -8,7 +8,7 @@ > #include > #include > #include > -#include > +#include > #include > > #include "../../../util/auxtrace.h" > @@ -27,7 +27,7 @@ static struct perf_pmu **find_all_arm_spe_pmus(int *nr_spes, int *err) > /* arm_spe_xxxxxxxxx\0 */ > char arm_spe_pmu_name[sizeof(ARM_SPE_PMU_NAME) + 10]; > > - arm_spe_pmus = zalloc(sizeof(struct perf_pmu *) * nr_cpus); > + arm_spe_pmus = calloc(nr_cpus, sizeof(struct perf_pmu *)); > if (!arm_spe_pmus) { > pr_err("spes alloc failed\n"); > *err = -ENOMEM; > @@ -79,7 +79,7 @@ static struct perf_pmu **find_all_hisi_ptt_pmus(int *nr_ptts, int *err) > if (!(*nr_ptts)) > goto out; > > - hisi_ptt_pmus = zalloc(sizeof(struct perf_pmu *) * (*nr_ptts)); > + hisi_ptt_pmus = calloc((*nr_ptts), sizeof(struct perf_pmu *)); > if (!hisi_ptt_pmus) { > pr_err("hisi_ptt alloc failed\n"); > *err = -ENOMEM; > diff --git a/tools/perf/arch/powerpc/util/auxtrace.c b/tools/perf/arch/powerpc/util/auxtrace.c > index 292ea335e4fff6b9..e39deff6c857a82a 100644 > --- a/tools/perf/arch/powerpc/util/auxtrace.c > +++ b/tools/perf/arch/powerpc/util/auxtrace.c > @@ -6,6 +6,7 @@ > #include > #include > #include > +#include > > #include "../../util/evlist.h" > #include "../../util/debug.h" > diff --git a/tools/perf/arch/x86/tests/amd-ibs-period.c b/tools/perf/arch/x86/tests/amd-ibs-period.c > index 223e059e04deb005..cee9e11c05e08c09 100644 > --- a/tools/perf/arch/x86/tests/amd-ibs-period.c > +++ b/tools/perf/arch/x86/tests/amd-ibs-period.c > @@ -8,7 +8,6 @@ > > #include "arch-tests.h" > #include "linux/perf_event.h" > -#include "linux/zalloc.h" > #include "tests/tests.h" > #include "../perf-sys.h" > #include "pmu.h" > @@ -60,7 +59,7 @@ static int dummy_workload_1(unsigned long count) > 0xcc, /* int 3 */ > }; > > - p = zalloc(2 * page_size); > + p = calloc(2, page_size); > if (!p) { > printf("malloc() failed. %m"); > return 1; > diff --git a/tools/perf/arch/x86/tests/dwarf-unwind.c b/tools/perf/arch/x86/tests/dwarf-unwind.c > index e91a73d09cecfd83..99d2b7ed016fd63f 100644 > --- a/tools/perf/arch/x86/tests/dwarf-unwind.c > +++ b/tools/perf/arch/x86/tests/dwarf-unwind.c > @@ -54,22 +54,13 @@ int test__arch_unwind_sample(struct perf_sample *sample, > struct thread *thread) > { > struct regs_dump *regs = perf_sample__user_regs(sample); > - u64 *buf; > + u64 *buf = calloc(PERF_REGS_MAX, sizeof(u64)); > > - buf = malloc(sizeof(u64) * PERF_REGS_MAX); > if (!buf) { > pr_debug("failed to allocate sample uregs data\n"); > return -1; > } > > -#ifdef MEMORY_SANITIZER > - /* > - * Assignments to buf in the assembly function perf_regs_load aren't > - * seen by memory sanitizer. Zero the memory to convince memory > - * sanitizer the memory is initialized. > - */ > - memset(buf, 0, sizeof(u64) * PERF_REGS_MAX); > -#endif > perf_regs_load(buf); > regs->abi = PERF_SAMPLE_REGS_ABI; > regs->regs = buf; > diff --git a/tools/perf/arch/x86/util/pmu.c b/tools/perf/arch/x86/util/pmu.c > index 0661e0f0b02d03cd..7c9d238922a6ce57 100644 > --- a/tools/perf/arch/x86/util/pmu.c > +++ b/tools/perf/arch/x86/util/pmu.c > @@ -7,7 +7,6 @@ > #include > #include > #include > -#include > #include > #include > #include > diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c > index 6588a9b0b15aec6d..42d7afc03f9b9ed2 100644 > --- a/tools/perf/bench/numa.c > +++ b/tools/perf/bench/numa.c > @@ -32,7 +32,6 @@ > #include > #include > #include > -#include > > #include "../util/header.h" > #include "../util/mutex.h" > @@ -980,10 +979,8 @@ static int count_process_nodes(int process_nr) > int nodes; > int n, t; > > - node_present = (char *)malloc(g->p.nr_nodes * sizeof(char)); > + node_present = calloc(g->p.nr_nodes, sizeof(char)); > BUG_ON(!node_present); > - for (nodes = 0; nodes < g->p.nr_nodes; nodes++) > - node_present[nodes] = 0; > > for (t = 0; t < g->p.nr_threads; t++) { > struct thread_data *td; > @@ -1090,10 +1087,8 @@ static void calc_convergence(double runtime_ns_max, double *convergence) > if (!g->p.show_convergence && !g->p.measure_convergence) > return; > > - nodes = (int *)malloc(g->p.nr_nodes * sizeof(int)); > + nodes = calloc(g->p.nr_nodes, sizeof(int)); > BUG_ON(!nodes); > - for (node = 0; node < g->p.nr_nodes; node++) > - nodes[node] = 0; > > loops_done_min = -1; > loops_done_max = 0; > @@ -1423,7 +1418,7 @@ static void worker_process(int process_nr) > bind_to_memnode(td->bind_node); > bind_to_cpumask(td->bind_cpumask); > > - pthreads = zalloc(g->p.nr_threads * sizeof(pthread_t)); > + pthreads = calloc(g->p.nr_threads, sizeof(pthread_t)); > process_data = setup_private_data(g->p.bytes_process); > > if (g->p.show_details >= 3) { > @@ -1629,7 +1624,7 @@ static int __bench_numa(const char *name) > if (init()) > return -1; > > - pids = zalloc(g->p.nr_proc * sizeof(*pids)); > + pids = calloc(g->p.nr_proc, sizeof(*pids)); > pid = -1; > > if (g->p.serialize_startup) { > diff --git a/tools/perf/bench/sched-messaging.c b/tools/perf/bench/sched-messaging.c > index 93dcd9dba3d0dcb2..4fb6657fc826c76c 100644 > --- a/tools/perf/bench/sched-messaging.c > +++ b/tools/perf/bench/sched-messaging.c > @@ -301,7 +301,7 @@ int bench_sched_messaging(int argc, const char **argv) > argc = parse_options(argc, argv, options, > bench_sched_message_usage, 0); > > - worker_tab = malloc(num_fds * 2 * num_groups * sizeof(union messaging_worker)); > + worker_tab = calloc(num_fds * 2 * num_groups, sizeof(union messaging_worker)); > if (!worker_tab) > err(EXIT_FAILURE, "main:malloc()"); > > diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c > index 530348b6981b73be..5e57b78548f4210d 100644 > --- a/tools/perf/builtin-annotate.c > +++ b/tools/perf/builtin-annotate.c > @@ -13,7 +13,6 @@ > #include > #include "util/cache.h" > #include > -#include > #include "util/symbol.h" > > #include "util/debug.h" > diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c > index 3ce5f0adec2f31c2..72a7802775ee965f 100644 > --- a/tools/perf/builtin-c2c.c > +++ b/tools/perf/builtin-c2c.c > @@ -155,7 +155,7 @@ static void *c2c_he_zalloc(size_t size) > if (!c2c_he->nodeset) > goto out_free; > > - c2c_he->node_stats = zalloc(c2c.nodes_cnt * sizeof(*c2c_he->node_stats)); > + c2c_he->node_stats = calloc(c2c.nodes_cnt, sizeof(*c2c_he->node_stats)); > if (!c2c_he->node_stats) > goto out_free; > > @@ -2324,13 +2324,13 @@ static int setup_nodes(struct perf_session *session) > if (!n) > return -EINVAL; > > - nodes = zalloc(sizeof(unsigned long *) * c2c.nodes_cnt); > + nodes = calloc(c2c.nodes_cnt, sizeof(unsigned long *)); > if (!nodes) > return -ENOMEM; > > c2c.nodes = nodes; > > - cpu2node = zalloc(sizeof(int) * c2c.cpus_cnt); > + cpu2node = calloc(c2c.cpus_cnt, sizeof(int)); > if (!cpu2node) > return -ENOMEM; > > diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c > index e45f0ac1381ab2df..0188b3d7636f6983 100644 > --- a/tools/perf/builtin-diff.c > +++ b/tools/perf/builtin-diff.c > @@ -1891,7 +1891,7 @@ static int data_init(int argc, const char **argv) > return -EINVAL; > } > > - data__files = zalloc(sizeof(*data__files) * data__files_cnt); > + data__files = calloc(data__files_cnt, sizeof(*data__files)); > if (!data__files) > return -ENOMEM; > > diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c > index 4cc33452d79b626b..8a7dbfb14535e2ba 100644 > --- a/tools/perf/builtin-ftrace.c > +++ b/tools/perf/builtin-ftrace.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > #include > > #include "debug.h" > diff --git a/tools/perf/builtin-kwork.c b/tools/perf/builtin-kwork.c > index 1140e00e874f4eed..9d3a4c779a41e383 100644 > --- a/tools/perf/builtin-kwork.c > +++ b/tools/perf/builtin-kwork.c > @@ -2208,7 +2208,7 @@ static int perf_kwork__top(struct perf_kwork *kwork) > struct __top_cpus_runtime *cpus_runtime; > int ret = 0; > > - cpus_runtime = zalloc(sizeof(struct __top_cpus_runtime) * (MAX_NR_CPUS + 1)); > + cpus_runtime = calloc(MAX_NR_CPUS + 1, sizeof(struct __top_cpus_runtime)); > if (!cpus_runtime) > return -1; > > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index e919d1f021c3cdbf..1adc37b451528798 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -1070,12 +1070,12 @@ static int record__thread_data_init_maps(struct record_thread *thread_data, stru > thread_data->nr_mmaps = bitmap_weight(thread_data->mask->maps.bits, > thread_data->mask->maps.nbits); > if (mmap) { > - thread_data->maps = zalloc(thread_data->nr_mmaps * sizeof(struct mmap *)); > + thread_data->maps = calloc(thread_data->nr_mmaps, sizeof(struct mmap *)); > if (!thread_data->maps) > return -ENOMEM; > } > if (overwrite_mmap) { > - thread_data->overwrite_maps = zalloc(thread_data->nr_mmaps * sizeof(struct mmap *)); > + thread_data->overwrite_maps = calloc(thread_data->nr_mmaps, sizeof(struct mmap *)); > if (!thread_data->overwrite_maps) { > zfree(&thread_data->maps); > return -ENOMEM; > @@ -1220,7 +1220,7 @@ static int record__alloc_thread_data(struct record *rec, struct evlist *evlist) > int t, ret; > struct record_thread *thread_data; > > - rec->thread_data = zalloc(rec->nr_threads * sizeof(*(rec->thread_data))); > + rec->thread_data = calloc(rec->nr_threads, sizeof(*(rec->thread_data))); > if (!rec->thread_data) { > pr_err("Failed to allocate thread data\n"); > return -ENOMEM; > @@ -3710,7 +3710,7 @@ static int record__alloc_thread_masks(struct record *rec, int nr_threads, int nr > { > int t, ret; > > - rec->thread_masks = zalloc(nr_threads * sizeof(*(rec->thread_masks))); > + rec->thread_masks = calloc(nr_threads, sizeof(*(rec->thread_masks))); > if (!rec->thread_masks) { > pr_err("Failed to allocate thread masks\n"); > return -ENOMEM; > @@ -3920,7 +3920,7 @@ static int record__init_thread_numa_masks(struct record *rec, struct perf_cpu_ma > return -ENOMEM; > } > > - spec = zalloc(topo->nr * sizeof(char *)); > + spec = calloc(topo->nr, sizeof(char *)); > if (!spec) { > pr_err("Failed to allocate NUMA spec\n"); > ret = -ENOMEM; > diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c > index 9fb5447f9014d026..555247568e7a6110 100644 > --- a/tools/perf/builtin-sched.c > +++ b/tools/perf/builtin-sched.c > @@ -2405,7 +2405,7 @@ static int init_idle_threads(int ncpu) > { > int i, ret; > > - idle_threads = zalloc(ncpu * sizeof(struct thread *)); > + idle_threads = calloc(ncpu, sizeof(struct thread *)); > if (!idle_threads) > return -ENOMEM; > > @@ -3483,7 +3483,7 @@ static int setup_cpus_switch_event(struct perf_sched *sched) > if (!sched->cpu_last_switched) > return -1; > > - sched->curr_pid = malloc(MAX_CPUS * sizeof(*(sched->curr_pid))); > + sched->curr_pid = calloc(MAX_CPUS, sizeof(*(sched->curr_pid))); > if (!sched->curr_pid) { > zfree(&sched->cpu_last_switched); > return -1; > @@ -3559,7 +3559,7 @@ static int setup_map_cpus(struct perf_sched *sched) > sched->max_cpu.cpu = sysconf(_SC_NPROCESSORS_CONF); > > if (sched->map.comp) { > - sched->map.comp_cpus = zalloc(sched->max_cpu.cpu * sizeof(int)); > + sched->map.comp_cpus = calloc(sched->max_cpu.cpu, sizeof(int)); > if (!sched->map.comp_cpus) > return -1; > } > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index 43ce119dac3ed9f9..c8ac9f01a36bc511 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -3823,7 +3823,7 @@ static int has_required_arg(char *script_path) > > static int have_cmd(int argc, const char **argv) > { > - char **__argv = malloc(sizeof(const char *) * argc); > + char **__argv = calloc(argc, sizeof(const char *)); > > if (!__argv) { > pr_err("malloc failed\n"); > @@ -4312,7 +4312,7 @@ int cmd_script(int argc, const char **argv) > } > } > > - __argv = malloc((argc + 6) * sizeof(const char *)); > + __argv = calloc(argc + 6, sizeof(const char *)); > if (!__argv) { > pr_err("malloc failed\n"); > err = -ENOMEM; > @@ -4338,7 +4338,7 @@ int cmd_script(int argc, const char **argv) > dup2(live_pipe[0], 0); > close(live_pipe[1]); > > - __argv = malloc((argc + 4) * sizeof(const char *)); > + __argv = calloc(argc + 4, sizeof(const char *)); > if (!__argv) { > pr_err("malloc failed\n"); > err = -ENOMEM; > @@ -4376,7 +4376,7 @@ int cmd_script(int argc, const char **argv) > } > } > > - __argv = malloc((argc + 2) * sizeof(const char *)); > + __argv = calloc(argc + 2, sizeof(const char *)); > if (!__argv) { > pr_err("malloc failed\n"); > err = -ENOMEM; > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c > index 35934e8bbd5199b4..99d7db372b480800 100644 > --- a/tools/perf/builtin-stat.c > +++ b/tools/perf/builtin-stat.c > @@ -2774,7 +2774,7 @@ int cmd_stat(int argc, const char **argv) > } > > if (stat_config.walltime_run_table) { > - stat_config.walltime_run = zalloc(stat_config.run_count * sizeof(stat_config.walltime_run[0])); > + stat_config.walltime_run = calloc(stat_config.run_count, sizeof(stat_config.walltime_run[0])); > if (!stat_config.walltime_run) { > pr_err("failed to setup -r option"); > goto out; > diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c > index 873d144807e2d16a..e58c49d047a294db 100644 > --- a/tools/perf/builtin-trace.c > +++ b/tools/perf/builtin-trace.c > @@ -2269,9 +2269,7 @@ static int trace__validate_ev_qualifier(struct trace *trace) > struct str_node *pos; > size_t nr_used = 0, nr_allocated = strlist__nr_entries(trace->ev_qualifier); > > - trace->ev_qualifier_ids.entries = malloc(nr_allocated * > - sizeof(trace->ev_qualifier_ids.entries[0])); > - > + trace->ev_qualifier_ids.entries = calloc(nr_allocated, sizeof(trace->ev_qualifier_ids.entries[0])); > if (trace->ev_qualifier_ids.entries == NULL) { > fputs("Error:\tNot enough memory for allocating events qualifier ids\n", > trace->output); > diff --git a/tools/perf/jvmti/libjvmti.c b/tools/perf/jvmti/libjvmti.c > index 87bfd4781003a331..d3dc53010e768669 100644 > --- a/tools/perf/jvmti/libjvmti.c > +++ b/tools/perf/jvmti/libjvmti.c > @@ -98,7 +98,7 @@ get_line_numbers(jvmtiEnv *jvmti, const void *compile_info, jvmti_line_info_t ** > /* > * Phase 2 -- allocate big enough line table > */ > - *tab = malloc(nr_total * sizeof(**tab)); > + *tab = calloc(nr_total, sizeof(**tab)); > if (!*tab) > return JVMTI_ERROR_OUT_OF_MEMORY; > > @@ -262,11 +262,10 @@ compiled_method_load_cb(jvmtiEnv *jvmti, > } > nr_lines = 0; > } else if (nr_lines > 0) { > - line_file_names = malloc(sizeof(char*) * nr_lines); > + line_file_names = calloc(nr_lines, sizeof(char *)); > if (!line_file_names) { > warnx("jvmti: cannot allocate space for line table method names"); > } else { > - memset(line_file_names, 0, sizeof(char*) * nr_lines); > ret = fill_source_filenames(jvmti, nr_lines, line_tab, line_file_names); > if (ret != JVMTI_ERROR_NONE) { > warnx("jvmti: fill_source_filenames failed"); > diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-reading.c > index 5927d1ea20e22331..47043a3a2fb4f833 100644 > --- a/tools/perf/tests/code-reading.c > +++ b/tools/perf/tests/code-reading.c > @@ -4,6 +4,7 @@ > #include > #include > #include > +#include > #include > #include > #include > diff --git a/tools/perf/tests/thread-map.c b/tools/perf/tests/thread-map.c > index 54209592168d8aaf..877868107455e87e 100644 > --- a/tools/perf/tests/thread-map.c > +++ b/tools/perf/tests/thread-map.c > @@ -9,7 +9,6 @@ > #include "debug.h" > #include "event.h" > #include "util/synthetic-events.h" > -#include > #include > #include > > diff --git a/tools/perf/util/annotate-arch/annotate-x86.c b/tools/perf/util/annotate-arch/annotate-x86.c > index c77aabd48ebab693..7e61365363938728 100644 > --- a/tools/perf/util/annotate-arch/annotate-x86.c > +++ b/tools/perf/util/annotate-arch/annotate-x86.c > @@ -1,6 +1,7 @@ > // SPDX-License-Identifier: GPL-2.0 > #include > #include > +#include > #include > #include > #include "../annotate-data.h" > diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c > index 67e7786bb878b396..a27945c279efb779 100644 > --- a/tools/perf/util/bpf-event.c > +++ b/tools/perf/util/bpf-event.c > @@ -349,7 +349,7 @@ static struct bpf_metadata *bpf_metadata_alloc(__u32 nr_prog_tags, > if (!metadata) > return NULL; > > - metadata->prog_names = zalloc(nr_prog_tags * sizeof(char *)); > + metadata->prog_names = calloc(nr_prog_tags, sizeof(char *)); > if (!metadata->prog_names) { > bpf_metadata_free(metadata); > return NULL; > diff --git a/tools/perf/util/bpf_counter_cgroup.c b/tools/perf/util/bpf_counter_cgroup.c > index 5572ceccf86092ff..519fee3dc3d03685 100644 > --- a/tools/perf/util/bpf_counter_cgroup.c > +++ b/tools/perf/util/bpf_counter_cgroup.c > @@ -11,7 +11,6 @@ > #include > #include > #include > -#include > #include > #include > #include > diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c > index bece77cbc49361b4..3b8f2df823a9b790 100644 > --- a/tools/perf/util/data-convert-bt.c > +++ b/tools/perf/util/data-convert-bt.c > @@ -1379,7 +1379,7 @@ static int setup_streams(struct ctf_writer *cw, struct perf_session *session) > */ > ncpus = env->nr_cpus_avail ?: MAX_CPUS; > > - stream = zalloc(sizeof(*stream) * ncpus); > + stream = calloc(ncpus, sizeof(*stream)); > if (!stream) { > pr_err("Failed to allocate streams.\n"); > return -ENOMEM; > diff --git a/tools/perf/util/data.c b/tools/perf/util/data.c > index 90df41da1a32b315..14fa83dae71a8b80 100644 > --- a/tools/perf/util/data.c > +++ b/tools/perf/util/data.c > @@ -43,7 +43,7 @@ int perf_data__create_dir(struct perf_data *data, int nr) > if (WARN_ON(!data->is_dir)) > return -EINVAL; > > - files = zalloc(nr * sizeof(*files)); > + files = calloc(nr, sizeof(*files)); > if (!files) > return -ENOMEM; > > diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c > index ae9a9065aab76c63..cc2bb1af4243446c 100644 > --- a/tools/perf/util/db-export.c > +++ b/tools/perf/util/db-export.c > @@ -19,7 +19,6 @@ > #include "callchain.h" > #include "call-path.h" > #include "db-export.h" > -#include > > int db_export__init(struct db_export *dbe) > { > diff --git a/tools/perf/util/disasm.c b/tools/perf/util/disasm.c > index 40fcaed5d0b1a3b8..4f5bd915355242ec 100644 > --- a/tools/perf/util/disasm.c > +++ b/tools/perf/util/disasm.c > @@ -13,6 +13,7 @@ > #include > > #include > +#include > #include > > #include "annotate.h" > diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c > index bc045fddf7d57569..66f4843bb235df53 100644 > --- a/tools/perf/util/event.c > +++ b/tools/perf/util/event.c > @@ -12,7 +12,6 @@ > #include > #include /* To get things like MAP_HUGETLB even on older libc headers */ > #include > -#include > #include "cpumap.h" > #include "dso.h" > #include "event.h" > diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c > index f46e1d40bad7324c..ee971d15b3c66bc1 100644 > --- a/tools/perf/util/evlist.c > +++ b/tools/perf/util/evlist.c > @@ -825,9 +825,8 @@ static struct mmap *evlist__alloc_mmap(struct evlist *evlist, > bool overwrite) > { > int i; > - struct mmap *map; > + struct mmap *map = calloc(evlist->core.nr_mmaps, sizeof(struct mmap)); > > - map = zalloc(evlist->core.nr_mmaps * sizeof(struct mmap)); > if (!map) > return NULL; > > diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c > index a3b7b796639b42c0..9eb5dfe341049ced 100644 > --- a/tools/perf/util/header.c > +++ b/tools/perf/util/header.c > @@ -2810,7 +2810,7 @@ static int process_cmdline(struct feat_fd *ff, void *data __maybe_unused) > if (!cmdline) > return -1; > > - argv = zalloc(sizeof(char *) * (nr + 1)); > + argv = calloc(nr + 1, sizeof(char *)); > if (!argv) > goto error; > > @@ -2964,7 +2964,7 @@ static int process_numa_topology(struct feat_fd *ff, void *data __maybe_unused) > if (do_read_u32(ff, &nr)) > return -1; > > - nodes = zalloc(sizeof(*nodes) * nr); > + nodes = calloc(nr, sizeof(*nodes)); > if (!nodes) > return -ENOMEM; > > @@ -3162,7 +3162,7 @@ static int process_cache(struct feat_fd *ff, void *data __maybe_unused) > if (do_read_u32(ff, &cnt)) > return -1; > > - caches = zalloc(sizeof(*caches) * cnt); > + caches = calloc(cnt, sizeof(*caches)); > if (!caches) > return -1; > > @@ -3254,7 +3254,7 @@ static int process_mem_topology(struct feat_fd *ff, > if (do_read_u64(ff, &nr)) > return -1; > > - nodes = zalloc(sizeof(*nodes) * nr); > + nodes = calloc(nr, sizeof(*nodes)); > if (!nodes) > return -1; > > @@ -3344,7 +3344,7 @@ static int process_hybrid_topology(struct feat_fd *ff, > if (do_read_u32(ff, &nr)) > return -1; > > - nodes = zalloc(sizeof(*nodes) * nr); > + nodes = calloc(nr, sizeof(*nodes)); > if (!nodes) > return -ENOMEM; > > @@ -3559,7 +3559,7 @@ static int __process_pmu_caps(struct feat_fd *ff, int *nr_caps, > if (!nr_pmu_caps) > return 0; > > - *caps = zalloc(sizeof(char *) * nr_pmu_caps); > + *caps = calloc(nr_pmu_caps, sizeof(char *)); > if (!*caps) > return -1; > > @@ -3636,7 +3636,7 @@ static int process_pmu_caps(struct feat_fd *ff, void *data __maybe_unused) > return 0; > } > > - pmu_caps = zalloc(sizeof(*pmu_caps) * nr_pmu); > + pmu_caps = calloc(nr_pmu, sizeof(*pmu_caps)); > if (!pmu_caps) > return -ENOMEM; > > @@ -3689,7 +3689,7 @@ static int process_cpu_domain_info(struct feat_fd *ff, void *data __maybe_unused > nra = env->nr_cpus_avail; > nr = env->nr_cpus_online; > > - cd_map = zalloc(sizeof(*cd_map) * nra); > + cd_map = calloc(nra, sizeof(*cd_map)); > if (!cd_map) > return -1; > > @@ -3722,7 +3722,7 @@ static int process_cpu_domain_info(struct feat_fd *ff, void *data __maybe_unused > > cd_map[cpu]->nr_domains = nr_domains; > > - cd_map[cpu]->domains = zalloc(sizeof(*d_info) * max_sched_domains); > + cd_map[cpu]->domains = calloc(max_sched_domains, sizeof(*d_info)); > if (!cd_map[cpu]->domains) > return -1; > > diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c > index fc737a0a8e4d7acd..747fdc455c80ec0f 100644 > --- a/tools/perf/util/hist.c > +++ b/tools/perf/util/hist.c > @@ -1151,7 +1151,7 @@ iter_prepare_cumulative_entry(struct hist_entry_iter *iter, > * cumulated only one time to prevent entries more than 100% > * overhead. > */ > - he_cache = malloc(sizeof(*he_cache) * (cursor->nr + 1)); > + he_cache = calloc(cursor->nr + 1, sizeof(*he_cache)); > if (he_cache == NULL) > return -ENOMEM; > > diff --git a/tools/perf/util/mem2node.c b/tools/perf/util/mem2node.c > index 03a7d7b2773774a0..51a2292cbf7ef44f 100644 > --- a/tools/perf/util/mem2node.c > +++ b/tools/perf/util/mem2node.c > @@ -59,7 +59,7 @@ int mem2node__init(struct mem2node *map, struct perf_env *env) > max += bitmap_weight(n->set, n->size); > } > > - entries = zalloc(sizeof(*entries) * max); > + entries = calloc(max, sizeof(*entries)); > if (!entries) > return -ENOMEM; > > diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c > index 98be2eb8f1f03923..9a2023ceeefd933a 100644 > --- a/tools/perf/util/pmus.c > +++ b/tools/perf/util/pmus.c > @@ -621,7 +621,7 @@ void perf_pmus__print_pmu_events(const struct print_callbacks *print_cb, void *p > while ((pmu = scan_fn(pmu)) != NULL) > len += perf_pmu__num_events(pmu); > > - aliases = zalloc(sizeof(struct sevent) * len); > + aliases = calloc(len, sizeof(struct sevent)); > if (!aliases) { > pr_err("FATAL: not enough memory to print PMU events\n"); > return; > diff --git a/tools/perf/util/powerpc-vpadtl.c b/tools/perf/util/powerpc-vpadtl.c > index 993ab16614c7285f..710f3093f3f909c4 100644 > --- a/tools/perf/util/powerpc-vpadtl.c > +++ b/tools/perf/util/powerpc-vpadtl.c > @@ -4,6 +4,7 @@ > */ > > #include > +#include > #include > #include > #include "color.h" > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > index 710e4620923ea8b2..f37a783ea7723197 100644 > --- a/tools/perf/util/probe-event.c > +++ b/tools/perf/util/probe-event.c > @@ -1850,7 +1850,7 @@ int parse_perf_probe_command(const char *cmd, struct perf_probe_event *pev) > > /* Copy arguments and ensure return probe has no C argument */ > pev->nargs = argc - 1; > - pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs); > + pev->args = calloc(pev->nargs, sizeof(struct perf_probe_arg)); > if (pev->args == NULL) { > ret = -ENOMEM; > goto out; > @@ -2000,7 +2000,7 @@ int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev) > } > > tev->nargs = argc - 2; > - tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs); > + tev->args = calloc(tev->nargs, sizeof(struct probe_trace_arg)); > if (tev->args == NULL) { > ret = -ENOMEM; > goto out; > @@ -2373,7 +2373,7 @@ static int convert_to_perf_probe_event(struct probe_trace_event *tev, > > /* Convert trace_arg to probe_arg */ > pev->nargs = tev->nargs; > - pev->args = zalloc(sizeof(struct perf_probe_arg) * pev->nargs); > + pev->args = calloc(pev->nargs, sizeof(struct perf_probe_arg)); > if (pev->args == NULL) > return -ENOMEM; > for (i = 0; i < tev->nargs && ret >= 0; i++) { > @@ -2480,7 +2480,7 @@ int perf_probe_event__copy(struct perf_probe_event *dst, > if (perf_probe_point__copy(&dst->point, &src->point) < 0) > goto out_err; > > - dst->args = zalloc(sizeof(struct perf_probe_arg) * src->nargs); > + dst->args = calloc(src->nargs, sizeof(struct perf_probe_arg)); > if (!dst->args) > goto out_err; > dst->nargs = src->nargs; > @@ -3179,7 +3179,7 @@ static int find_probe_trace_events_from_map(struct perf_probe_event *pev, > } > > /* Setup result trace-probe-events */ > - *tevs = zalloc(sizeof(*tev) * num_matched_functions); > + *tevs = calloc(num_matched_functions, sizeof(*tev)); > if (!*tevs) { > ret = -ENOMEM; > goto out; > @@ -3251,8 +3251,7 @@ static int find_probe_trace_events_from_map(struct perf_probe_event *pev, > tev->uprobes = pev->uprobes; > tev->nargs = pev->nargs; > if (tev->nargs) { > - tev->args = zalloc(sizeof(struct probe_trace_arg) * > - tev->nargs); > + tev->args = calloc(tev->nargs, sizeof(struct probe_trace_arg)); > if (tev->args == NULL) > goto nomem_out; > } > @@ -3363,7 +3362,7 @@ static int try_to_find_absolute_address(struct perf_probe_event *pev, > } > > tev->nargs = pev->nargs; > - tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs); > + tev->args = calloc(tev->nargs, sizeof(struct probe_trace_arg)); > if (!tev->args) > goto errout; > > @@ -3549,7 +3548,7 @@ static int find_probe_trace_events_from_cache(struct perf_probe_event *pev, > goto out; > } > > - *tevs = zalloc(ret * sizeof(*tev)); > + *tevs = calloc(ret, sizeof(*tev)); > if (!*tevs) { > ret = -ENOMEM; > goto out; > diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c > index f78c3bc3d601ea95..4032572cbf55df12 100644 > --- a/tools/perf/util/probe-file.c > +++ b/tools/perf/util/probe-file.c > @@ -414,7 +414,7 @@ int probe_cache_entry__get_event(struct probe_cache_entry *entry, > if (ret > probe_conf.max_probes) > return -E2BIG; > > - *tevs = zalloc(ret * sizeof(*tev)); > + *tevs = calloc(ret, sizeof(*tev)); > if (!*tevs) > return -ENOMEM; > > diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c > index 5ffd97ee4898e51e..64328abeef8b2427 100644 > --- a/tools/perf/util/probe-finder.c > +++ b/tools/perf/util/probe-finder.c > @@ -1305,7 +1305,7 @@ static int add_probe_trace_event(Dwarf_Die *sc_die, struct probe_finder *pf) > tev->point.offset); > > /* Expand special probe argument if exist */ > - args = zalloc(sizeof(struct perf_probe_arg) * MAX_PROBE_ARGS); > + args = calloc(MAX_PROBE_ARGS, sizeof(struct perf_probe_arg)); > if (args == NULL) { > ret = -ENOMEM; > goto end; > @@ -1316,7 +1316,7 @@ static int add_probe_trace_event(Dwarf_Die *sc_die, struct probe_finder *pf) > goto end; > > tev->nargs = ret; > - tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs); > + tev->args = calloc(tev->nargs, sizeof(struct probe_trace_arg)); > if (tev->args == NULL) { > ret = -ENOMEM; > goto end; > @@ -1393,7 +1393,7 @@ int debuginfo__find_trace_events(struct debuginfo *dbg, > int ret, i; > > /* Allocate result tevs array */ > - *tevs = zalloc(sizeof(struct probe_trace_event) * tf.max_tevs); > + *tevs = calloc(tf.max_tevs, sizeof(struct probe_trace_event)); > if (*tevs == NULL) > return -ENOMEM; > > @@ -1566,7 +1566,7 @@ int debuginfo__find_available_vars_at(struct debuginfo *dbg, > int ret; > > /* Allocate result vls array */ > - *vls = zalloc(sizeof(struct variable_list) * af.max_vls); > + *vls = calloc(af.max_vls, sizeof(struct variable_list)); > if (*vls == NULL) > return -ENOMEM; > > diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c > index 7588cca110d2b08f..312ea05e21139213 100644 > --- a/tools/perf/util/session.c > +++ b/tools/perf/util/session.c > @@ -2559,7 +2559,7 @@ static int __perf_session__process_dir_events(struct perf_session *session) > nr_readers++; > } > > - rd = zalloc(nr_readers * sizeof(struct reader)); > + rd = calloc(nr_readers, sizeof(struct reader)); > if (!rd) > return -ENOMEM; > > diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c > index 9be42f3984405f9e..b58710624eadfe1b 100644 > --- a/tools/perf/util/srcline.c > +++ b/tools/perf/util/srcline.c > @@ -12,6 +12,7 @@ > #include > #include > #include > +#include > > bool srcline_full_filename; > > diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c > index 59d2cd4f2188de72..bc2d44df7bafa4d5 100644 > --- a/tools/perf/util/stat-shadow.c > +++ b/tools/perf/util/stat-shadow.c > @@ -13,7 +13,6 @@ > #include "metricgroup.h" > #include "cgroup.h" > #include "units.h" > -#include > #include "iostat.h" > #include "util/hashmap.h" > #include "tool_pmu.h" > diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c > index 5b39ce21e33351f8..87d496e9dfa6669c 100644 > --- a/tools/perf/util/unwind-libunwind-local.c > +++ b/tools/perf/util/unwind-libunwind-local.c > @@ -25,7 +25,6 @@ > #include > #include > #include > -#include > #ifndef REMOTE_UNWIND_LIBUNWIND > #include > #include > diff --git a/tools/perf/util/values.c b/tools/perf/util/values.c > index ec72d29f3d586d47..6eaddfcf833e52a2 100644 > --- a/tools/perf/util/values.c > +++ b/tools/perf/util/values.c > @@ -13,9 +13,9 @@ > int perf_read_values_init(struct perf_read_values *values) > { > values->threads_max = 16; > - values->pid = malloc(values->threads_max * sizeof(*values->pid)); > - values->tid = malloc(values->threads_max * sizeof(*values->tid)); > - values->value = zalloc(values->threads_max * sizeof(*values->value)); > + values->pid = calloc(values->threads_max, sizeof(*values->pid)); > + values->tid = calloc(values->threads_max, sizeof(*values->tid)); > + values->value = calloc(values->threads_max, sizeof(*values->value)); > if (!values->pid || !values->tid || !values->value) { > pr_debug("failed to allocate read_values threads arrays"); > goto out_free_pid; > @@ -96,7 +96,7 @@ static int perf_read_values__findnew_thread(struct perf_read_values *values, > > i = values->threads; > > - values->value[i] = zalloc(values->counters_max * sizeof(**values->value)); > + values->value[i] = calloc(values->counters_max, sizeof(**values->value)); > if (!values->value[i]) { > pr_debug("failed to allocate read_values counters array"); > return -ENOMEM; > -- > 2.53.0 >