aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/cloexec.c
diff options
context:
space:
mode:
authorMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>2014-08-13 22:22:36 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2014-08-15 09:58:35 -0400
commit6e81c74cbf4b64620170da14844f1dc8a9a5950f (patch)
treece4d4d23f34959965a4cae5e48355de1b40f4063 /tools/perf/util/cloexec.c
parent5f03cba41590b5e7db5b66d2b2aa3e146ff8a84f (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.c6
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
7static unsigned long flag = PERF_FLAG_FD_CLOEXEC; 8static 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);