perf tools: Check vmlinux/kallsyms arguments in all tools
authorJames Clark <james.clark@arm.com>
Mon, 18 Oct 2021 13:48:42 +0000 (14:48 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Sun, 7 Nov 2021 15:27:38 +0000 (12:27 -0300)
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
tools/perf/builtin-c2c.c
tools/perf/builtin-probe.c
tools/perf/builtin-record.c
tools/perf/builtin-sched.c
tools/perf/builtin-script.c
tools/perf/builtin-top.c

index 05eb098cb0e3bc2f5958cb0bc5b54f18093470af..490bb9b8cf176e60b6c19949710988c9245991dc 100644 (file)
@@ -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();
 
index a192014fa52b23dcaceaa4e6ae949f895928fb11..b5c67ef73862b8d80c1fa8b2399f035f8bd1c04e 100644 (file)
@@ -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";
 
index e1dd51f2874b6a1499458c296a5a8bce42d5e479..c31627af75d419bfcf4f6fc60b71038cd6884d71 100644 (file)
@@ -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");
index 78185c982ebf73e05242c27d2d837c9bcc84ed4d..0338b813585aaf8e4856991cb8548201daedd9d4 100644 (file)
@@ -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;
index 635a6b5a9ec972d30ce1dae925bd27b05cad7f84..4527f632ebe46d9df545977b1368ab6b37ff6739 100644 (file)
@@ -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 {
index f3d07cfab5504b0a4868e65cf456cdd02773465f..9434367af1668a91fc266db8453f7cb6759a746c 100644 (file)
@@ -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)
index 020c4f110c1009763310249ddf39ffd4b0094c99..1fc390f136dd90b1d845359fb16529c3f47d6a4f 100644 (file)
@@ -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;