Skip to content

Commit

Permalink
perf tools: Open perf.data with O_CLOEXEC flag
Browse files Browse the repository at this point in the history
Do not carry the perf.data file descriptor into the workload process and
close it when perf executes the workload.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20170908084621.31595-2-jolsa@kernel.org
[ Add definitions for O_CLOEXEC for older systems ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
olsajiri authored and acmel committed Sep 12, 2017
1 parent 58b7918 commit cd6379e
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion tools/perf/util/data.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@
#include "util.h"
#include "debug.h"

#ifndef O_CLOEXEC
#ifdef __sparc__
#define O_CLOEXEC 0x400000
#elif defined(__alpha__) || defined(__hppa__)
#define O_CLOEXEC 010000000
#else
#define O_CLOEXEC 02000000
#endif
#endif

static bool check_pipe(struct perf_data_file *file)
{
struct stat st;
Expand Down Expand Up @@ -96,7 +106,8 @@ static int open_file_write(struct perf_data_file *file)
if (check_backup(file))
return -1;

fd = open(file->path, O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR);
fd = open(file->path, O_CREAT|O_RDWR|O_TRUNC|O_CLOEXEC,
S_IRUSR|S_IWUSR);

if (fd < 0)
pr_err("failed to open %s : %s\n", file->path,
Expand Down

0 comments on commit cd6379e

Please sign in to comment.