Andi, this one didn't work with cherry-pick, so if you want it in 3.14-stable, I need a backported version. thanks, greg k-h On Sat, Apr 09, 2016 at 10:52:03AM -0700, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > > The patch below does not apply to the 3.14-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@xxxxxxxxxxxxxxx>. > > thanks, > > greg k-h > > ------------------ original commit in Linus's tree ------------------ > > >From 940db6dcd3f4659303fdf6befe7416adc4d24118 Mon Sep 17 00:00:00 2001 > From: Andi Kleen <ak@xxxxxxxxxxxxxxx> > Date: Wed, 17 Feb 2016 14:44:55 -0800 > Subject: [PATCH] perf tools: Dont stop PMU parsing on alias parse error > > 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@xxxxxxxxxxxxxxx> > Cc: Jiri Olsa <jolsa@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx # v3.6+ > Link: http://lkml.kernel.org/r/1455749095-18358-1-git-send-email-andi@xxxxxxxxxxxxxx > Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c > index cf59fbaee491..ce61f79dbaae 100644 > --- a/tools/perf/util/pmu.c > +++ b/tools/perf/util/pmu.c > @@ -284,13 +284,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; > @@ -306,17 +305,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; > } > > /* > > -- > To unsubscribe from this list: send the line "unsubscribe stable" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html