| From 7cc72553ac03ec20afe2dec91dce4624ccd379b8 Mon Sep 17 00:00:00 2001 |
| From: James Clark <james.clark@arm.com> |
| Date: Mon, 18 Oct 2021 14:48:42 +0100 |
| Subject: [PATCH 2/3] perf tools: Check vmlinux/kallsyms arguments in all tools |
| |
| Only perf report checked the validity of these arguments so apply the |
| same check to all tools that read them for consistency. |
| |
| Signed-off-by: James Clark <james.clark@arm.com> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: Denis Nikitin <denik@chromium.org> |
| Cc: Jiri Olsa <jolsa@redhat.com> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Link: https://lore.kernel.org/r/20211018134844.2627174-3-james.clark@arm.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| --- |
| tools/perf/builtin-annotate.c | 4 ++++ |
| tools/perf/builtin-c2c.c | 4 ++++ |
| tools/perf/builtin-probe.c | 5 +++++ |
| tools/perf/builtin-record.c | 4 ++++ |
| tools/perf/builtin-sched.c | 4 ++++ |
| tools/perf/builtin-script.c | 3 +++ |
| tools/perf/builtin-top.c | 4 ++++ |
| 7 files changed, 28 insertions(+) |
| |
| diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c |
| index 05eb098cb0e3..490bb9b8cf17 100644 |
| --- a/tools/perf/builtin-annotate.c |
| +++ b/tools/perf/builtin-annotate.c |
| @@ -591,6 +591,10 @@ int cmd_annotate(int argc, const char **argv) |
| return ret; |
| } |
| |
| + ret = symbol__validate_sym_arguments(); |
| + if (ret) |
| + return ret; |
| + |
| if (quiet) |
| perf_quiet_option(); |
| |
| diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c |
| index a192014fa52b..b5c67ef73862 100644 |
| --- a/tools/perf/builtin-c2c.c |
| +++ b/tools/perf/builtin-c2c.c |
| @@ -2768,6 +2768,10 @@ static int perf_c2c__report(int argc, const char **argv) |
| if (c2c.stats_only) |
| c2c.use_stdio = true; |
| |
| + err = symbol__validate_sym_arguments(); |
| + if (err) |
| + goto out; |
| + |
| if (!input_name || !strlen(input_name)) |
| input_name = "perf.data"; |
| |
| diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c |
| index e1dd51f2874b..c31627af75d4 100644 |
| --- a/tools/perf/builtin-probe.c |
| +++ b/tools/perf/builtin-probe.c |
| @@ -21,6 +21,7 @@ |
| #include "util/build-id.h" |
| #include "util/strlist.h" |
| #include "util/strfilter.h" |
| +#include "util/symbol.h" |
| #include "util/symbol_conf.h" |
| #include "util/debug.h" |
| #include <subcmd/parse-options.h> |
| @@ -629,6 +630,10 @@ __cmd_probe(int argc, const char **argv) |
| params.command = 'a'; |
| } |
| |
| + ret = symbol__validate_sym_arguments(); |
| + if (ret) |
| + return ret; |
| + |
| if (params.quiet) { |
| if (verbose != 0) { |
| pr_err(" Error: -v and -q are exclusive.\n"); |
| diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c |
| index 78185c982ebf..0338b813585a 100644 |
| --- a/tools/perf/builtin-record.c |
| +++ b/tools/perf/builtin-record.c |
| @@ -2712,6 +2712,10 @@ int cmd_record(int argc, const char **argv) |
| if (quiet) |
| perf_quiet_option(); |
| |
| + err = symbol__validate_sym_arguments(); |
| + if (err) |
| + return err; |
| + |
| /* Make system wide (-a) the default target. */ |
| if (!argc && target__none(&rec->opts.target)) |
| rec->opts.target.system_wide = true; |
| diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c |
| index 635a6b5a9ec9..4527f632ebe4 100644 |
| --- a/tools/perf/builtin-sched.c |
| +++ b/tools/perf/builtin-sched.c |
| @@ -3538,6 +3538,7 @@ int cmd_sched(int argc, const char **argv) |
| .fork_event = replay_fork_event, |
| }; |
| unsigned int i; |
| + int ret; |
| |
| for (i = 0; i < ARRAY_SIZE(sched.curr_pid); i++) |
| sched.curr_pid[i] = -1; |
| @@ -3598,6 +3599,9 @@ int cmd_sched(int argc, const char **argv) |
| parse_options_usage(NULL, timehist_options, "n", true); |
| return -EINVAL; |
| } |
| + ret = symbol__validate_sym_arguments(); |
| + if (ret) |
| + return ret; |
| |
| return perf_sched__timehist(&sched); |
| } else { |
| diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c |
| index f3d07cfab550..9434367af166 100644 |
| --- a/tools/perf/builtin-script.c |
| +++ b/tools/perf/builtin-script.c |
| @@ -3846,6 +3846,9 @@ int cmd_script(int argc, const char **argv) |
| data.path = input_name; |
| data.force = symbol_conf.force; |
| |
| + if (symbol__validate_sym_arguments()) |
| + return -1; |
| + |
| if (argc > 1 && !strncmp(argv[0], "rec", strlen("rec"))) { |
| rec_script_path = get_script_path(argv[1], RECORD_SUFFIX); |
| if (!rec_script_path) |
| diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c |
| index 020c4f110c10..1fc390f136dd 100644 |
| --- a/tools/perf/builtin-top.c |
| +++ b/tools/perf/builtin-top.c |
| @@ -1618,6 +1618,10 @@ int cmd_top(int argc, const char **argv) |
| if (argc) |
| usage_with_options(top_usage, options); |
| |
| + status = symbol__validate_sym_arguments(); |
| + if (status) |
| + goto out_delete_evlist; |
| + |
| if (annotate_check_args(&top.annotation_opts) < 0) |
| goto out_delete_evlist; |
| |
| -- |
| 2.34.0.rc0.344.g81b53c2807-goog |
| |