When first calling perf_config(), the config set is initialized collecting both user and system config files (i.e. user config ~/.perfconfig and system config $(sysconfdir)/perfconfig) so config set contains not only user config but also system config key-value pairs. (User config has higher priority than system config.)
But 'config' sub-command individually use the config set so free the existing config set (i.e. a global variable config_set) before reinstantiating it. And 'config' sub-command have '--user' or '--system' options. To reinitialize with the options, the config set should be reset at the very beginning at cmd_config() 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 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c index f23fe52..4dab41e 100644 --- a/tools/perf/builtin-config.c +++ b/tools/perf/builtin-config.c @@ -79,6 +79,11 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) else if (use_user_config) config_exclusive_filename = user_config; + /* + * Reset the config set at only 'config' sub-command + * because of reinitializing with options config file location. + */ + perf_config_set__delete(&config_set); config_set = perf_config_set__new(); if (!config_set) { ret = -1; -- 2.5.0