perf: Fix perf_event_init_task()/perf_event_free_task() interaction
authorOleg Nesterov <oleg@redhat.com>
Wed, 19 Jan 2011 18:22:28 +0000 (19:22 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 19 Jan 2011 19:04:28 +0000 (20:04 +0100)
commit8550d7cb6ed6c89add49c3b6ad4c753ab8a3d7f9
tree9942aa32e7706bbb9bf52b9aecd542008f50d5aa
parentdbe08d82ce3967ccdf459f7951d02589cf967300
perf: Fix perf_event_init_task()/perf_event_free_task() interaction

perf_event_init_task() should clear child->perf_event_ctxp[]
before anything else. Otherwise, if
perf_event_init_context(perf_hw_context) fails,
perf_event_free_task() can free perf_event_ctxp[perf_sw_context]
copied from parent->perf_event_ctxp[] by dup_task_struct().

Also move the initialization of perf_event_mutex and
perf_event_list from perf_event_init_context() to
perf_event_init_context().

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Prasad <prasad@linux.vnet.ibm.com>
Cc: Roland McGrath <roland@redhat.com>
LKML-Reference: <20110119182228.GC12183@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/perf_event.c