summaryrefslogtreecommitdiff
path: root/tools/perf/util/libbfd.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/libbfd.c')
-rw-r--r--tools/perf/util/libbfd.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/perf/util/libbfd.c b/tools/perf/util/libbfd.c
index 2324f6846d51..63ea3fb53e77 100644
--- a/tools/perf/util/libbfd.c
+++ b/tools/perf/util/libbfd.c
@@ -418,13 +418,20 @@ out_close:
return err;
}
-int libbfd__read_build_id(const char *filename, struct build_id *bid, bool block)
+int libbfd__read_build_id(const char *filename, struct build_id *bid)
{
size_t size = sizeof(bid->data);
int err = -1, fd;
bfd *abfd;
- fd = open(filename, block ? O_RDONLY : (O_RDONLY | O_NONBLOCK));
+ if (!filename)
+ return -EFAULT;
+
+ errno = 0;
+ if (!is_regular_file(filename))
+ return errno == 0 ? -EWOULDBLOCK : -errno;
+
+ fd = open(filename, O_RDONLY);
if (fd < 0)
return -1;