Re: [PATCH] perf vendor events: fix processing for xfs

From: John Garry
Date: Wed Mar 14 2018 - 15:39:57 EST


On 14/03/2018 18:53, Arnaldo Carvalho de Melo wrote:
Em Thu, Mar 15, 2018 at 01:10:52AM +0800, John Garry escreveu:
In the recently introduced support for vendor subdirectory,
the checking for directory entries under xfs (or any other fs
which does not support dirent.d_type) is missing the check
for links for current and parent directory. This can result
in a broken pmu_events.c being generated.

Fix this by adding the appropriate check in is_leaf_dir().

So I'll lookup the patch that introduced the patch and squash this one
with it, so that we don't break 'git bisect' on ppc.

Right, so it's going to be "perf vendor events: add support for pmu events vendor subdirectory".

BTW, I don't think it's specifically ppc which was broken, but just when building from xfs.

Much appreciated,
John


- Arnaldo

Cc: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxxxxxxx>
Signed-off-by: John Garry <john.garry@xxxxxxxxxx>

diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
index 1c01844..db3a594 100644
--- a/tools/perf/pmu-events/jevents.c
+++ b/tools/perf/pmu-events/jevents.c
@@ -873,7 +873,10 @@ static int is_leaf_dir(const char *fpath)
return 0;

while ((dir = readdir(d)) != NULL) {
- if (dir->d_type == DT_DIR && dir->d_name[0] != '.') {
+ if (!strcmp(dir->d_name, ".") || !strcmp(dir->d_name, ".."))
+ continue;
+
+ if (dir->d_type == DT_DIR) {
res = 0;
break;
} else if (dir->d_type == DT_UNKNOWN) {
--
1.9.1

.