diff options
author | Peter Zijlstra <peterz@infradead.org> | 2016-01-25 13:08:45 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-01-28 19:06:35 (GMT) |
commit | 78cd2c748f459739ff864dd9308c0f6caf7f6e41 (patch) | |
tree | b25470373d9ed5c038833854b466e3725a56cf68 /kernel/events | |
parent | 45c815f06b80031659c63d7b93e580015d6024dd (diff) | |
download | linux-78cd2c748f459739ff864dd9308c0f6caf7f6e41.tar.xz |
perf: Fix orphan hole
We should set event->owner before we install the event,
otherwise there is a hole where the target task can fork() and
we'll not inherit the event because it thinks the event is
orphaned.
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/events')
-rw-r--r-- | kernel/events/core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 9de4d35..6759f2a 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -8489,6 +8489,8 @@ SYSCALL_DEFINE5(perf_event_open, perf_event__header_size(event); perf_event__id_header_size(event); + event->owner = current; + perf_install_in_context(ctx, event, event->cpu); perf_unpin_context(ctx); @@ -8498,8 +8500,6 @@ SYSCALL_DEFINE5(perf_event_open, put_online_cpus(); - event->owner = current; - mutex_lock(¤t->perf_event_mutex); list_add_tail(&event->owner_entry, ¤t->perf_event_list); mutex_unlock(¤t->perf_event_mutex); |