perf: Fix owner-list vs exit
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Tue, 9 Nov 2010 18:01:43 +0000 (19:01 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 18 Nov 2010 12:18:46 +0000 (13:18 +0100)
commit8882135bcd332f294df5455747ea43ba9e6f77ad
tree758f26d26750fd5007e885cc28125f7c1fa24ca6
parentfcf48a725a176ba12aa7be64c50190deaa2f86df
perf: Fix owner-list vs exit

Oleg noticed that a perf-fd keeping a reference on the creating task
leads to a few funny side effects.

There's two different aspects to this:

  - kernel based perf-events, these should not take out
    a reference on the creating task and appear on the task's
    event list since they're not bound to fds nor visible
    to userspace.

  - fork() and pthread_create(), these can lead to the creating
    task dying (and thus the task's event-list becomming useless)
    but keeping the list and ref alive until the event is closed.

Combined they lead to malfunction of the ptrace hw_tracepoints.

Cure this by not considering kernel based perf_events for the
owner-list and destroying the owner-list when the owner dies.

Reported-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Oleg Nesterov <oleg@redhat.com>
LKML-Reference: <1289576883.2084.286.camel@laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/perf_event.c