]> git.baikalelectronics.ru Git - kernel.git/commit
perf_events: Fix races in group composition
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Thu, 27 May 2010 13:47:49 +0000 (15:47 +0200)
committerIngo Molnar <mingo@elte.hu>
Mon, 31 May 2010 06:46:09 +0000 (08:46 +0200)
commit65db7fce7bb6680e70fe94471429618cf09334cc
tree73e82ee5a624012ac723c3af21bb1945b7bd675f
parente5777b34038f45be2fac7a04e45fff7a83136334
perf_events: Fix races in group composition

Group siblings don't pin each-other or the parent, so when we destroy
events we must make sure to clean up all cross referencing pointers.

In particular, for destruction of a group leader we must be able to
find all its siblings and remove their reference to it.

This means that detaching an event from its context must not detach it
from the group, otherwise we can end up failing to clear all pointers.

Solve this by clearly separating the attachment to a context and
attachment to a group, and keep the group composed until we destroy
the events.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/perf_event.h
kernel/perf_event.c