Bug#632923: linux-tools-2.6.39: perf tries to read ./config, fails if it is not a perf config file
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 11 lines · Christian Ohm
Package: linux-tools-2.6.39
Version: 2.6.39-3
Severity: normalHello,
When running perf, it looks for a config file in
/etc/perfconfig, ~/.perfconfig, and ./config (according to strace). If ./config is not a perf configuration, it fails (or possibly does unexpected things). Since "config" is a quite generic name (I have 175 files with that name on my system) it would be nice if this is changed to e.g. ./.perfconfig.
This indeed seems like a misfeature.
Is perf supposed to be invoked in directories dedicated to its use? If not, why should it expect a generically-named file to belong to it?
Ben.
Signature · 2 lines
Ben Hutchings The most exhausting thing in life is being insincere. - Anne Morrow Lindberg
PATCH 1/1 perf: do not look at ./config for configuration
In addition to /etc/perfconfig and $HOME/.perfconfig, perf looks for configuration in the file ./config, imitating git which looks at $GIT_DIR/config. If ./config is not a perf configuration file, it fails, or worse, treats it as a configuration file and changes behavior in some unexpected way.
"config" is not an unusual name for a file to be lying around and perf does not have a private directory dedicated for its own use, so let's just stop looking for configuration in the cwd. Callers needing context-sensitive configuration can use the PERF_CONFIG environment variable.
---
Thoughts?
tools/perf/util/config.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-)
tools/perf/util/config.c +0 -7
@@ -399,7 +399,6 @@ static int perf_config_global(void)int perf_config (config_fn_t fn,void *data) {int ret =0 , found =0 ; -char *repo_config =NULL ;const char *home =NULL ;/* Setting $PERF_CONFIG makes perf read _only_ the given config file. */
@@ -421,12 +420,6 @@ int perf_config(config_fn_t fn, void *data)free (user_config); } - repo_config =perf_pathdup ("config" ); -if (!access (repo_config,R_OK )) { - ret +=perf_config_from_file (fn, repo_config, data); - found +=1 ; - } -free (repo_config);if (found ==0 )return -1 ;return ret;
Signature · 1 line
1.7.6
Re: [PATCH] perf: do not look at ./config for configuration
Em Fri, Aug 05, 2011 at 06:58:38PM +0200, Jonathan Nieder escreveu:
Quoted 11 lines
In addition to
/etc/perfconfigand $HOME/.perfconfig, perf looks for configuration in the file ./config, imitating git which looks at $GIT_DIR/config. If ./config is not a perf configuration file, it fails, or worse, treats it as a configuration file and changes behavior in some unexpected way."config" is not an unusual name for a file to be lying around and perf does not have a private directory dedicated for its own use, so let's just stop looking for configuration in the cwd. Callers needing context-sensitive configuration can use the
PERF_CONFIGenvironment variable.
Thanks, I'll apply this one.
- Arnaldo
[tip:perf/urgent] perf tools: do not look at ./config for configuration
In reply to Jonathan NiederCommit-ID: aba8d056078e47350d85b06a9cabd5afcc4b72ea Gitweb: http://git.kernel.org/tip/aba8d056078e47350d85b06a9cabd5afcc4b72ea Author: Jonathan Nieder <[email protected]> AuthorDate: Fri, 5 Aug 2011 18:58:38 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 8 Aug 2011 09:46:32 -0300
perf tools: do not look at ./config for configuration
In addition to /etc/perfconfig and $HOME/.perfconfig, perf looks for configuration in the file ./config, imitating git which looks at $GIT_DIR/config. If ./config is not a perf configuration file, it fails, or worse, treats it as a configuration file and changes behavior in some unexpected way.
"config" is not an unusual name for a file to be lying around and perf does not have a private directory dedicated for its own use, so let's just stop looking for configuration in the cwd. Callers needing context-sensitive configuration can use the PERF_CONFIG environment variable.
--- tools/perf/util/config.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-)
tools/perf/util/config.c +0 -7
@@ -399,7 +399,6 @@ static int perf_config_global(void)int perf_config (config_fn_t fn,void *data) {int ret =0 , found =0 ; -char *repo_config =NULL ;const char *home =NULL ;/* Setting $PERF_CONFIG makes perf read _only_ the given config file. */
@@ -421,12 +420,6 @@ int perf_config(config_fn_t fn, void *data)free (user_config); } - repo_config =perf_pathdup ("config" ); -if (!access (repo_config,R_OK )) { - ret +=perf_config_from_file (fn, repo_config, data); - found +=1 ; - } -free (repo_config);if (found ==0 )return -1 ;return ret;