Commit 89ea5794 authored by Andi Kleen's avatar Andi Kleen Committed by Greg Kroah-Hartman

perf tools: Dont stop PMU parsing on alias parse error

commit 940db6dc 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: default avatarAndi 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.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 00fa143c
...@@ -284,13 +284,12 @@ static int pmu_aliases_parse(char *dir, struct list_head *head) ...@@ -284,13 +284,12 @@ static int pmu_aliases_parse(char *dir, struct list_head *head)
{ {
struct dirent *evt_ent; struct dirent *evt_ent;
DIR *event_dir; DIR *event_dir;
int ret = 0;
event_dir = opendir(dir); event_dir = opendir(dir);
if (!event_dir) if (!event_dir)
return -EINVAL; return -EINVAL;
while (!ret && (evt_ent = readdir(event_dir))) { while ((evt_ent = readdir(event_dir))) {
char path[PATH_MAX]; char path[PATH_MAX];
char *name = evt_ent->d_name; char *name = evt_ent->d_name;
FILE *file; FILE *file;
...@@ -306,17 +305,19 @@ static int pmu_aliases_parse(char *dir, struct list_head *head) ...@@ -306,17 +305,19 @@ static int pmu_aliases_parse(char *dir, struct list_head *head)
snprintf(path, PATH_MAX, "%s/%s", dir, name); snprintf(path, PATH_MAX, "%s/%s", dir, name);
ret = -EINVAL;
file = fopen(path, "r"); file = fopen(path, "r");
if (!file) if (!file) {
break; 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); fclose(file);
} }
closedir(event_dir); closedir(event_dir);
return ret; return 0;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment