When first calling perf_config(), config set is initialized but 'config' sub-command need to reset config set because of '--user' or '--system' options.
The options of 'config' sub-command is to select a particular config file location so the config set should be reinitialized collecting configs from selected exclusive config file. Cc: Namhyung Kim <namhy...@kernel.org> Cc: Jiri Olsa <jo...@redhat.com> Cc: Masami Hiramatsu <mhira...@kernel.org> Cc: Alexander Shishkin <alexander.shish...@linux.intel.com> Signed-off-by: Taeung Song <treeze.tae...@gmail.com> --- tools/perf/builtin-config.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c index 4a61411..dc5b52f 100644 --- a/tools/perf/builtin-config.c +++ b/tools/perf/builtin-config.c @@ -47,7 +47,6 @@ static int show_config(const char *key, const char *value, int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) { int ret = 0; - struct perf_config_set *set; char *user_config = mkpath("%s/.perfconfig", getenv("HOME")); argc = parse_options(argc, argv, config_options, config_usage, @@ -65,11 +64,11 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) else if (use_user_config) config_exclusive_filename = user_config; - set = perf_config_set__new(); - if (!set) { - ret = -1; - goto out_err; - } + /* + * Reset config set at only 'config' sub-command + * because of options config file location. + */ + perf_config_set__delete(); switch (actions) { case ACTION_LIST: @@ -92,6 +91,5 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) } perf_config_set__delete(); -out_err: return ret; } -- 2.5.0