linux-stable/tools/perf/util
Ian Rogers 3d1d029734 perf stat: Avoid metric-only segv
[ Upstream commit 2543947c77 ]

Cycles is recognized as part of a hard coded metric in stat-shadow.c,
it may call print_metric_only with a NULL fmt string leading to a
segfault. Handle the NULL fmt explicitly.

Fixes: 088519f318 ("perf stat: Move the display functions to stat-display.c")
Signed-off-by: Ian Rogers <irogers@google.com>
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
Cc: K Prateek Nayak <kprateek.nayak@amd.com>
Cc: James Clark <james.clark@arm.com>
Cc: Kaige Ye <ye@kaige.org>
Cc: John Garry <john.g.garry@oracle.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240209204947.3873294-4-irogers@google.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-03-26 18:21:27 -04:00
..
arm-spe-decoder perf arm-spe: Avoid potential buffer overrun 2021-04-07 16:23:20 -03:00
bpf_skel perf stat: Fix BPF program section name 2022-09-28 11:11:52 +02:00
c++
cs-etm-decoder perf cs-etm: Print the decoder name 2021-09-03 08:17:25 -03:00
include tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf bench mem memcpy' 2020-11-12 17:55:41 -03:00
intel-pt-decoder perf intel-pt: Fix CYC timestamps after standalone CBR 2023-05-11 23:00:40 +09:00
libunwind perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
scripting-engines perf script python: Allow reporting the [un]throttle PERF_RECORD_ meta event 2021-09-03 08:18:25 -03:00
affinity.c tools: rename bitmap_alloc() to bitmap_zalloc() 2021-09-08 11:50:27 -07:00
affinity.h
amd-sample-raw.c perf report: Add support to print a textual representation of IBS raw sample data 2021-09-10 18:15:21 -03:00
annotate.c perf annotate bpf: Don't enclose non-debug code with an assert() 2023-09-19 12:22:57 +02:00
annotate.h perf annotate: Show full source location with 'l' hotkey 2021-03-06 16:42:31 -03:00
archinsn.h
arm-spe.c perf arm-spe: Don't set data source if it's not a memory operation 2022-06-29 09:03:24 +02:00
arm-spe.h
auxtrace.c perf auxtrace: Fix address filter entire kernel size 2023-05-11 23:00:40 +09:00
auxtrace.h perf auxtrace: Add compat_auxtrace_mmap__{read_head|write_tail} 2021-08-31 15:12:00 -03:00
block-info.c perf report: Fix wrong LBR block sorting 2021-04-07 16:18:49 -03:00
block-info.h
block-range.c
block-range.h
bpf-event.c perf env: Avoid recursively taking env->bpf_progs.lock 2024-01-25 14:52:52 -08:00
bpf-event.h perf env: Avoid recursively taking env->bpf_progs.lock 2024-01-25 14:52:52 -08:00
bpf-loader.c perf bpf: Defer freeing string after possible strlen() on it 2022-02-23 12:03:13 +01:00
bpf-loader.h perf bpf: Enclose libbpf.h include within HAVE_LIBBPF_SUPPORT 2020-11-04 09:42:40 -03:00
bpf-prologue.c
bpf-prologue.h
bpf_counter.c tools: Replace btf__get_from_id() with btf__load_from_kernel_by_id() 2021-07-29 17:23:52 -07:00
bpf_counter.h perf build: Properly guard libbpf includes 2023-01-18 11:48:56 +01:00
bpf_counter_cgroup.c libperf: Move 'idx' from tools/perf to perf_evsel::idx 2021-07-09 14:04:28 -03:00
bpf_map.c
bpf_map.h
branch.c perf: Add irq and exception return branch types 2023-10-25 11:58:58 +02:00
branch.h
Build perf build: Define YYNOMEM as YYNOABORT for bison < 3.81 2023-10-06 13:18:19 +02:00
build-id.c perf build-id: Fix caching files with a wrong build ID 2022-06-29 09:03:31 +02:00
build-id.h perf buildid-cache: Don't skip 16-byte build-ids 2021-02-18 16:41:40 -03:00
cache.h
cacheline.c
cacheline.h
call-path.c
call-path.h perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
callchain.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
callchain.h perf streams: Report hot streams 2020-10-14 13:34:26 -03:00
cap.c
cap.h
cgroup.c perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match non BPF mode 2023-01-12 11:59:16 +01:00
cgroup.h perf stat: Enable BPF counter with --for-each-cgroup 2021-07-05 14:16:57 -03:00
clockid.c
clockid.h
cloexec.c
cloexec.h
color.c
color.h
color_config.c
comm.c
comm.h
compress.h
config.c perf config: Refine error message to eliminate confusion 2021-09-27 09:32:28 -03:00
config.h perf config: Make perf_config_global() global 2021-01-20 14:34:21 -03:00
copyfile.c
copyfile.h
counts.c
counts.h
cpu-set-sched.h
cpumap.c perf stat aggregation: Add separate thread member 2020-12-24 10:05:28 -03:00
cpumap.h perf stat aggregation: Add separate thread member 2020-12-24 10:05:28 -03:00
cputopo.c perf header: Support HYBRID_TOPOLOGY feature 2021-05-17 10:55:10 -03:00
cputopo.h perf header: Support HYBRID_TOPOLOGY feature 2021-05-17 10:55:10 -03:00
cs-etm.c perf cs-etm: Show a warning for an unknown magic number 2021-09-03 08:18:24 -03:00
cs-etm.h perf cs-etm: Save TRCDEVARCH register 2021-09-03 08:15:10 -03:00
data-convert-bt.c perf tools: Remove repipe argument from perf_session__new() 2021-08-02 10:06:51 -03:00
data-convert-json.c perf tools: Remove repipe argument from perf_session__new() 2021-08-02 10:06:51 -03:00
data-convert.h perf data: Add JSON export 2021-04-29 10:30:58 -03:00
data.c perf tools: Fix resources leak in perf_data__open_dir() 2023-01-12 11:59:15 +01:00
data.h perf tools: Add missing headers needed by util/data.h 2022-06-09 10:22:52 +02:00
db-export.c perf scripting python: Add 'addr_location' for 'addr' 2021-05-25 10:07:17 -03:00
db-export.h perf scripting python: Add 'addr_location' for 'addr' 2021-05-25 10:07:17 -03:00
debug.c perf debug: Set debug_peo_args and redirect_to_stderr variable to correct values in perf_quiet_option() 2022-12-31 13:14:45 +01:00
debug.h perf tools: Add WARN_ONCE equivalent for UI warnings 2021-08-03 17:03:18 -03:00
demangle-java.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
demangle-java.h
demangle-ocaml.c perf tools: Preserve identifier id in OCaml demangler 2021-03-30 12:45:59 -03:00
demangle-ocaml.h perf tools: Add OCaml demangling 2021-02-17 15:15:06 -03:00
demangle-rust.c
demangle-rust.h
dlfilter.c perf tests: Add dlfilter test 2021-08-11 09:35:44 -03:00
dlfilter.h perf tests: Add dlfilter test 2021-08-11 09:35:44 -03:00
dso.c perf tools: Allow build-id with trailing zeros 2021-09-11 16:04:47 -03:00
dso.h perf tools: Add flag for tracking warnings of missing DSOs 2021-08-03 17:04:08 -03:00
dsos.c perf tools: Fix dso_id inode generation comparison 2022-08-17 14:24:09 +02:00
dsos.h
dump-insn.c
dump-insn.h
dwarf-aux.c perf dwarf-aux: Fix off-by-one in die_get_varname() 2023-07-23 13:47:12 +02:00
dwarf-aux.h perf probe: Fix add event failure when running 32-bit perf in a 64-bit kernel 2021-07-18 09:31:15 -03:00
dwarf-regs.c perf tools: Support MIPS unwinding and dwarf-regs 2021-03-01 14:47:50 -03:00
env.c perf env: Avoid recursively taking env->bpf_progs.lock 2024-01-25 14:52:52 -08:00
env.h perf env: Avoid recursively taking env->bpf_progs.lock 2024-01-25 14:52:52 -08:00
event.c perf script: Support filtering by hex address 2021-02-08 17:09:11 -03:00
event.h perf script: Add missing PERF_IP_FLAG_CHARS for VM-Entry and VM-Exit 2021-05-21 16:41:37 -03:00
events_stats.h perf session: Report collisions in AUX records 2021-09-03 08:29:55 -03:00
evlist-hybrid.c perf evlist: Fix failed to use cpu list for uncore events 2022-03-02 11:47:52 +01:00
evlist-hybrid.h perf tools: Enable on a list of CPUs for hybrid 2021-08-11 16:07:32 -03:00
evlist.c perf evlist: Refactor evlist__for_each_cpu() 2023-05-17 11:50:21 +02:00
evlist.h perf evlist: Refactor evlist__for_each_cpu() 2023-05-17 11:50:21 +02:00
evsel.c perf evsel: Fix duplicate initialization of data->id in evsel__parse_sample() 2024-03-26 18:21:26 -04:00
evsel.h perf stat: Separate bperf from bpf_profiler 2023-05-17 11:50:21 +02:00
evsel_config.h
evsel_fprintf.c perf tools: Add 'evlist' control command 2021-01-20 14:34:21 -03:00
evsel_fprintf.h
evswitch.c perf evlist: Use the right prefix for 'struct evlist' 'find' methods 2020-11-30 09:48:07 -03:00
evswitch.h
expr.c perf expr: Force encapsulation on expr_id_data 2020-11-16 14:09:18 -03:00
expr.h perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
expr.l
expr.y perf expr: Force encapsulation on expr_id_data 2020-11-16 14:09:18 -03:00
find-map.c
fncache.c
fncache.h
genelf.c perf genelf: Set ELF program header addresses properly 2024-01-25 14:52:51 -08:00
genelf.h perf inject: Fix GEN_ELF_TEXT_OFFSET for jit 2024-01-15 18:51:25 +01:00
genelf_debug.c
generate-cmdlist.sh
get_current_dir_name.c perf tools: Fixup get_current_dir_name() compilation 2021-08-30 10:06:16 -03:00
get_current_dir_name.h
hashmap.c perf tools: Update copy of libbpf's hashmap.c 2020-11-03 08:26:55 -03:00
hashmap.h perf tools: Update copy of libbpf's hashmap.c 2020-11-27 14:19:33 -03:00
header.c perf env: Avoid recursively taking env->bpf_progs.lock 2024-01-25 14:52:52 -08:00
header.h perf tools: Pass a fd to perf_file_header__read_pipe() 2021-08-02 10:09:05 -03:00
help-unknown-cmd.c
help-unknown-cmd.h
hist.c perf hist: Add missing puts to hist__account_cycles 2023-11-20 11:08:26 +01:00
hist.h perf hist: Fix memory leak of a perf_hpp_fmt 2021-12-08 09:04:41 +01:00
intel-bts.c
intel-bts.h
intel-pt.c perf intel-pt: Fix async branch flags 2023-12-08 08:48:04 +01:00
intel-pt.h
intlist.c perf intlist: Change 'struct intlist' int member to 'unsigned long' 2021-02-08 17:02:00 -03:00
intlist.h perf intlist: Change 'struct intlist' int member to 'unsigned long' 2021-02-08 17:02:00 -03:00
iostat.c perf stat: Basic support for iostat in perf 2021-04-20 08:40:20 -03:00
iostat.h perf stat: Basic support for iostat in perf 2021-04-20 08:40:20 -03:00
jit.h perf inject jit: Add namespaces support 2021-02-03 13:10:44 -03:00
jitdump.c perf jit: Let convert_timestamp() to be backwards-compatible 2021-04-29 10:31:00 -03:00
jitdump.h
kvm-stat.h
levenshtein.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
levenshtein.h
llvm-utils.c perf llvm: Fix inadvertent file creation 2023-03-10 09:39:32 +01:00
llvm-utils.h
lzma.c perf lzma: Close lzma stream on exit 2021-07-15 17:30:22 -03:00
machine.c perf machine: Avoid out of bounds LBR memory read 2023-11-20 11:08:26 +01:00
machine.h perf machine: Factor out machine__idle_thread() 2021-02-18 16:14:33 -03:00
map.c Revert "perf map: Fix dso->nsinfo refcounting" 2021-07-30 18:26:22 -03:00
map.h perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
map_symbol.h perf sort: Add sort option for data page size 2020-12-19 17:52:24 -03:00
maps.h
mem-events.c perf mem-events: Remove duplicate #undef 2021-06-16 15:05:24 -03:00
mem-events.h perf mem: Support record for hybrid platform 2021-06-01 11:04:59 -03:00
mem2node.c perf mem2node: Improve warning if detected no memory nodes 2020-11-04 09:42:40 -03:00
mem2node.h
memswap.c
memswap.h
metricgroup.c tools: rename bitmap_alloc() to bitmap_zalloc() 2021-09-08 11:50:27 -07:00
metricgroup.h perf metricgroup: Make find_metric() public with name change 2021-04-08 14:23:39 -03:00
mmap.c tools: rename bitmap_alloc() to bitmap_zalloc() 2021-09-08 11:50:27 -07:00
mmap.h perf mmap: Add missing bitops.h header 2021-08-31 16:21:17 -03:00
namespaces.c perf inject jit: Add namespaces support 2021-02-03 13:10:44 -03:00
namespaces.h perf inject jit: Add namespaces support 2021-02-03 13:10:44 -03:00
ordered-events.c
ordered-events.h
parse-branch-options.c
parse-branch-options.h
parse-events-hybrid.c perf tools: Fix hybrid config terms list corruption 2021-09-11 16:00:34 -03:00
parse-events-hybrid.h perf parse-events: Compare with hybrid pmu name 2021-04-29 10:30:59 -03:00
parse-events.c perf: Skip and warn on unknown format 'configN' attrs 2022-10-29 10:12:58 +02:00
parse-events.h perf parse-events: Compare with hybrid pmu name 2021-04-29 10:30:59 -03:00
parse-events.l perf tools: Add 'cgroup-switches' software event 2021-05-19 14:23:23 -03:00
parse-events.y perf parse-events: Identify broken modifiers 2022-10-12 09:53:28 +02:00
parse-regs-options.c perf record: Fix memory leak when using '--user-regs=?' to list registers 2020-12-17 14:36:16 -03:00
parse-regs-options.h
parse-sublevel-options.c
parse-sublevel-options.h perf tools: Add missing newline at the end of header file 2021-08-24 15:01:31 -03:00
path.c
path.h
perf-hooks-list.h
perf-hooks.c
perf-hooks.h
PERF-VERSION-GEN
perf_api_probe.c perf record: Move probing cgroup sampling support 2021-06-01 10:32:00 -03:00
perf_api_probe.h perf record: Move probing cgroup sampling support 2021-06-01 10:32:00 -03:00
perf_event_attr_fprintf.c perf tools: Fix perf_event_attr__fprintf() missing/dupl. fields 2021-09-11 15:58:36 -03:00
perf_regs.c
perf_regs.h perf tools: Fix arm64 build error with gcc-11 2021-02-18 16:24:43 -03:00
pfm.c libperf: Fix build error with LIBPFM4=1 2021-07-14 10:05:35 -03:00
pfm.h
pmu-hybrid.c perf pmu: Add hybrid helper functions 2021-04-29 10:30:59 -03:00
pmu-hybrid.h perf header: Support HYBRID_TOPOLOGY feature 2021-05-17 10:55:10 -03:00
pmu.c perf pmu: zfree() expects a pointer to a pointer to zero it after freeing its contents 2023-05-17 11:50:20 +02:00
pmu.h perf: Skip and warn on unknown format 'configN' attrs 2022-10-29 10:12:58 +02:00
pmu.l perf: Skip and warn on unknown format 'configN' attrs 2022-10-29 10:12:58 +02:00
pmu.y perf: Skip and warn on unknown format 'configN' attrs 2022-10-29 10:12:58 +02:00
print_binary.c perf python scripting: Fix printable strings in python3 scripts 2020-10-01 12:10:56 -03:00
print_binary.h
probe-event.c perf probe: Fix an error handling path in 'parse_perf_probe_command()' 2022-08-25 11:40:15 +02:00
probe-event.h perf probe: Fix add event failure when running 32-bit perf in a 64-bit kernel 2021-07-18 09:31:15 -03:00
probe-file.c perf probe-file: Delete namelist in del_events() on the error path 2021-07-18 09:27:37 -03:00
probe-file.h
probe-finder.c perf probe: Fix add event failure when running 32-bit perf in a 64-bit kernel 2021-07-18 09:31:15 -03:00
probe-finder.h perf probe: Fix add event failure when running 32-bit perf in a 64-bit kernel 2021-07-18 09:31:15 -03:00
pstack.c
pstack.h
python-ext-sources perf stat: Warn group events from different hybrid PMU 2021-04-29 10:30:59 -03:00
python.c libperf: Move 'idx' from tools/perf to perf_evsel::idx 2021-07-09 14:04:28 -03:00
rb_resort.h
rblist.c
rblist.h
record.c libperf: Move 'leader' from tools/perf to perf_evsel::leader 2021-07-09 14:04:31 -03:00
record.h perf record: Add support for PERF_SAMPLE_CODE_PAGE_SIZE 2021-01-20 14:34:20 -03:00
rlimit.c
rlimit.h
rwsem.c
rwsem.h
s390-cpumcf-kernel.h
s390-cpumsf-kernel.h
s390-cpumsf.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
s390-cpumsf.h
s390-sample-raw.c perf pmu: Add pmu_events_map__find() function to find the common PMU map for the system 2021-04-08 14:24:14 -03:00
sample-raw.c perf report: Add support to print a textual representation of IBS raw sample data 2021-09-10 18:15:21 -03:00
sample-raw.h perf report: Add support to print a textual representation of IBS raw sample data 2021-09-10 18:15:21 -03:00
session.c perf session: Remap buf if there is no space for event 2022-04-13 20:59:20 +02:00
session.h perf tools: Pass a fd to perf_file_header__read_pipe() 2021-08-02 10:09:05 -03:00
setns.c
setup.py perf python: Fix probing for some clang command line options 2022-04-13 20:59:26 +02:00
sideband_evlist.c perf evlist: Use the right prefix for 'struct evlist' create maps methods 2020-11-30 14:56:52 -03:00
smt.c perf tools: Fix SMT detection fast read path 2021-12-14 10:57:18 +01:00
smt.h
sort.c perf map: Delete two variable initialisations before null pointer checks in sort__sym_from_cmp() 2023-05-17 11:50:20 +02:00
sort.h perf sort: Fix the 'p_stage_cyc' sort key behavior 2021-12-08 09:04:40 +01:00
spark.c
spark.h
srccode.c perf srccode: Use list_move() instead of equivalent list_del() + list_add() sequence 2021-06-08 09:36:36 -03:00
srccode.h
srcline.c
srcline.h
stat-display.c perf stat: Avoid metric-only segv 2024-03-26 18:21:27 -04:00
stat-shadow.c libperf: Move 'leader' from tools/perf to perf_evsel::leader 2021-07-09 14:04:31 -03:00
stat.c perf stat: Fix counting when initial delay configured 2023-03-17 08:48:54 +01:00
stat.h perf stat: Fix counting when initial delay configured 2023-03-17 08:48:54 +01:00
strbuf.c
strbuf.h perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
stream.c libperf: Move 'idx' from tools/perf to perf_evsel::idx 2021-07-09 14:04:28 -03:00
stream.h perf streams: Report hot streams 2020-10-14 13:34:26 -03:00
strfilter.c
strfilter.h perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
string.c perf tools: Add OCaml demangling 2021-02-17 15:15:06 -03:00
string2.h perf tools: Add OCaml demangling 2021-02-17 15:15:06 -03:00
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol-elf.c perf symbols: Fix return incorrect build_id size in elf_read_build_id() 2023-05-17 11:50:21 +02:00
symbol-minimal.c perf tools: Pass build_id object to dso__set_build_id() 2020-10-14 08:46:42 -03:00
symbol.c perf symbols: Symbol lookup with kcore can fail if multiple segments match stext 2023-07-05 18:25:05 +01:00
symbol.h perf symbol: Remove arch__symbols__fixup_end() 2022-05-09 09:14:44 +02:00
symbol_conf.h perf script: Support filtering by hex address 2021-02-08 17:09:11 -03:00
symbol_fprintf.c perf symbols: Fix dso__fprintf_symbols_by_name() to return the number of printed chars 2021-03-08 11:17:51 -03:00
symsrc.h
synthetic-events.c perf tools: Honor namespace when synthesizing build-ids 2022-09-28 11:11:53 +02:00
synthetic-events.h perf inject: Fix output from a file to a pipe 2021-08-02 10:14:34 -03:00
syscalltbl.c perf tools: Generate mips syscalls_n64.c syscall table 2021-03-01 14:49:28 -03:00
syscalltbl.h
target.c perf stat: Enable counting events for BPF programs 2021-01-20 14:25:28 -03:00
target.h perf stat: Fix counting when initial delay configured 2023-03-17 08:48:54 +01:00
term.c
term.h
thread-stack.c
thread-stack.h perf tools: Remove duplicate struct forward declarations 2021-03-25 08:59:10 -03:00
thread.c
thread.h
thread_map.c perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str() 2024-03-26 18:21:27 -04:00
thread_map.h
time-utils.c
time-utils.h
tool.h
top.c
top.h
topdown.c
topdown.h
trace-event-info.c perf trace-event-info: Rename for_each_event. 2021-02-03 13:13:53 -03:00
trace-event-parse.c
trace-event-read.c perf traceevent: Ensure read cmdlines are null terminated. 2021-03-06 16:54:26 -03:00
trace-event-scripting.c perf scripting: Add perf_session to scripting_context 2021-06-01 10:03:17 -03:00
trace-event.c
trace-event.h perf script python: Allow reporting the [un]throttle PERF_RECORD_ meta event 2021-09-03 08:18:25 -03:00
trigger.h
tsc.c perf session: Dump PERF_RECORD_TIME_CONV event 2021-04-29 10:31:00 -03:00
tsc.h perf session: Dump PERF_RECORD_TIME_CONV event 2021-04-29 10:31:00 -03:00
units.c perf stat: Improve readability of shadow stats 2021-03-15 11:36:54 -03:00
units.h perf stat: Improve readability of shadow stats 2021-03-15 11:36:54 -03:00
unwind-libdw.c perf unwind: Set userdata for all __report_module() paths 2021-02-18 14:20:32 -03:00
unwind-libdw.h
unwind-libunwind-local.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
unwind-libunwind.c
unwind.h
usage.c
util.c perf report: Fix memory leaks around perf_tip() 2021-12-08 09:04:41 +01:00
util.h perf report: Fix memory leaks around perf_tip() 2021-12-08 09:04:41 +01:00
values.c
values.h
vdso.c perf record: Fix memory leak in vDSO found using ASAN 2021-03-24 10:38:56 -03:00
vdso.h
zlib.c
zstd.c