perf: Fix free_event()
With the context rework stuff we can actually end up freeing an event before it gets attached to a context. Reported-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
cde8e88498
commit
0c67b40872
@@ -2150,7 +2150,9 @@ static void free_event(struct perf_event *event)
|
|||||||
if (event->destroy)
|
if (event->destroy)
|
||||||
event->destroy(event);
|
event->destroy(event);
|
||||||
|
|
||||||
put_ctx(event->ctx);
|
if (event->ctx)
|
||||||
|
put_ctx(event->ctx);
|
||||||
|
|
||||||
call_rcu(&event->rcu_head, free_event_rcu);
|
call_rcu(&event->rcu_head, free_event_rcu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user