diff options
author | Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> | 2014-08-13 22:22:36 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-08-15 09:58:35 -0400 |
commit | 6e81c74cbf4b64620170da14844f1dc8a9a5950f (patch) | |
tree | ce4d4d23f34959965a4cae5e48355de1b40f4063 /tools/perf/util/cloexec.c | |
parent | 5f03cba41590b5e7db5b66d2b2aa3e146ff8a84f (diff) |
perf util: Replace strerror with strerror_r for thread-safety
Replaces all strerror with strerror_r in util for making the perf lib
thread-safe.
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Naohiro Aota <naota@elisp.net>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20140814022236.3545.3367.stgit@kbuild-fedora.novalocal
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/cloexec.c')
-rw-r--r-- | tools/perf/util/cloexec.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/perf/util/cloexec.c b/tools/perf/util/cloexec.c index 4945aa56a017..47b78b3f0325 100644 --- a/tools/perf/util/cloexec.c +++ b/tools/perf/util/cloexec.c | |||
@@ -3,6 +3,7 @@ | |||
3 | #include "../perf.h" | 3 | #include "../perf.h" |
4 | #include "cloexec.h" | 4 | #include "cloexec.h" |
5 | #include "asm/bug.h" | 5 | #include "asm/bug.h" |
6 | #include "debug.h" | ||
6 | 7 | ||
7 | static unsigned long flag = PERF_FLAG_FD_CLOEXEC; | 8 | static unsigned long flag = PERF_FLAG_FD_CLOEXEC; |
8 | 9 | ||
@@ -18,6 +19,7 @@ static int perf_flag_probe(void) | |||
18 | int err; | 19 | int err; |
19 | int cpu; | 20 | int cpu; |
20 | pid_t pid = -1; | 21 | pid_t pid = -1; |
22 | char sbuf[STRERR_BUFSIZE]; | ||
21 | 23 | ||
22 | cpu = sched_getcpu(); | 24 | cpu = sched_getcpu(); |
23 | if (cpu < 0) | 25 | if (cpu < 0) |
@@ -42,7 +44,7 @@ static int perf_flag_probe(void) | |||
42 | 44 | ||
43 | WARN_ONCE(err != EINVAL && err != EBUSY, | 45 | WARN_ONCE(err != EINVAL && err != EBUSY, |
44 | "perf_event_open(..., PERF_FLAG_FD_CLOEXEC) failed with unexpected error %d (%s)\n", | 46 | "perf_event_open(..., PERF_FLAG_FD_CLOEXEC) failed with unexpected error %d (%s)\n", |
45 | err, strerror(err)); | 47 | err, strerror_r(err, sbuf, sizeof(sbuf))); |
46 | 48 | ||
47 | /* not supported, confirm error related to PERF_FLAG_FD_CLOEXEC */ | 49 | /* not supported, confirm error related to PERF_FLAG_FD_CLOEXEC */ |
48 | fd = sys_perf_event_open(&attr, pid, cpu, -1, 0); | 50 | fd = sys_perf_event_open(&attr, pid, cpu, -1, 0); |
@@ -50,7 +52,7 @@ static int perf_flag_probe(void) | |||
50 | 52 | ||
51 | if (WARN_ONCE(fd < 0 && err != EBUSY, | 53 | if (WARN_ONCE(fd < 0 && err != EBUSY, |
52 | "perf_event_open(..., 0) failed unexpectedly with error %d (%s)\n", | 54 | "perf_event_open(..., 0) failed unexpectedly with error %d (%s)\n", |
53 | err, strerror(err))) | 55 | err, strerror_r(err, sbuf, sizeof(sbuf)))) |
54 | return -1; | 56 | return -1; |
55 | 57 | ||
56 | close(fd); | 58 | close(fd); |