mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
perf tools: Dont stop PMU parsing on alias parse error
commit 940db6dcd3 upstream.
When an error happens during alias parsing currently the complete
parsing of all attributes of the PMU is stopped. This is breaks old perf
on a newer kernel that may have not-yet-know alias attributes (such as
.scale or .per-pkg).
Continue when some attribute is unparseable.
This is IMHO a stable candidate and should be backported to older
versions to avoid problems with newer kernels.
v2: Print warnings when something goes wrong.
v3: Change warning to debug output
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1455749095-18358-1-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
37014e0c5c
commit
2dfe91df33
|
|
@ -283,13 +283,12 @@ static int pmu_aliases_parse(char *dir, struct list_head *head)
|
|||
{
|
||||
struct dirent *evt_ent;
|
||||
DIR *event_dir;
|
||||
int ret = 0;
|
||||
|
||||
event_dir = opendir(dir);
|
||||
if (!event_dir)
|
||||
return -EINVAL;
|
||||
|
||||
while (!ret && (evt_ent = readdir(event_dir))) {
|
||||
while ((evt_ent = readdir(event_dir))) {
|
||||
char path[PATH_MAX];
|
||||
char *name = evt_ent->d_name;
|
||||
FILE *file;
|
||||
|
|
@ -305,17 +304,19 @@ static int pmu_aliases_parse(char *dir, struct list_head *head)
|
|||
|
||||
snprintf(path, PATH_MAX, "%s/%s", dir, name);
|
||||
|
||||
ret = -EINVAL;
|
||||
file = fopen(path, "r");
|
||||
if (!file)
|
||||
break;
|
||||
if (!file) {
|
||||
pr_debug("Cannot open %s\n", path);
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = perf_pmu__new_alias(head, dir, name, file);
|
||||
if (perf_pmu__new_alias(head, dir, name, file) < 0)
|
||||
pr_debug("Cannot set up %s\n", name);
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
closedir(event_dir);
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user