Skip to contentSkip to conversation

Bug#632923: linux-tools-2.6.39: perf tries to read ./config, fails if it is not a perf config file

PATCH In review Ben Hutchings 3 participants 4 messages Jul 7, 2011 – Aug 10, 2011 1 message not in the archive perf events

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw
Quoted 11 lines · Christian Ohm

Package: linux-tools-2.6.39
Version: 2.6.39-3
Severity: normal

Hello,

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
#2 lore raw

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
index e02d78ca..6c86eca8 100644
@@ -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
#3 lore raw

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/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.

Thanks, I'll apply this one.

- Arnaldo

#4 lore raw

[tip:perf/urgent] perf tools: do not look at ./config for configuration

In reply to Jonathan Nieder
Commit-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
index e02d78c..6c86eca 100644
@@ -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;