Re: [PATCH v2] perf: Synchronously cleanup child events

From: Peter Zijlstra
Date: Fri Jan 22 2016 - 07:38:59 EST


On Fri, Jan 22, 2016 at 01:35:40PM +0200, Alexander Shishkin wrote:
> Peter Zijlstra <peterz@xxxxxxxxxxxxx> writes:
>
> > So I think there's a number of problems still :-(
>
> Also, it does indeed race with
> __perf_event_exit_task()/sync_child_event(), but that one I'd fix by
> simply wrapping the sync_child_event()/free_event() in
>
> mutex_lock(&parent_event->child_mutex);
> if (!is_orphan_event(parent_event)) {
> sync_child_event(child_event);
> free_event(child_event);
> }
> mutex_unlock(&parent_event->child_event);

Also, note the comment with _perf_event_disable(), that relies on
sync_child_event() taking event->parent->child_mutex.