diff options
-rw-r--r-- | tools/perf/util/pmu.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 96ef317bac41..9eedbfc9e863 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -494,9 +494,13 @@ static int pmu_aliases_parse(int dirfd, struct list_head *head) continue; fd = openat(dirfd, name, O_RDONLY); + if (fd == -1) { + pr_debug("Cannot open %s\n", name); + continue; + } file = fdopen(fd, "r"); if (!file) { - pr_debug("Cannot open %s\n", name); + close(fd); continue; } @@ -1882,9 +1886,13 @@ int perf_pmu__caps_parse(struct perf_pmu *pmu) continue; fd = openat(caps_fd, name, O_RDONLY); + if (fd == -1) + continue; file = fdopen(fd, "r"); - if (!file) + if (!file) { + close(fd); continue; + } if (!fgets(value, sizeof(value), file) || (perf_pmu__new_caps(&pmu->caps, name, value) < 0)) { |