summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2010-09-09 21:01:59 +0200
committerIngo Molnar <mingo@elte.hu>2010-09-09 21:07:09 +0200
commit4e231c7962ce711c7d8c2a4dc23ecd1e8fc28363 (patch)
tree05af30e5c2f1084d8e77c89f0e55beaafa2194c0 /kernel
parent1b9a644fece117cfa5474a2388d6b89d1baf8ddf (diff)
downloadop-kernel-dev-4e231c7962ce711c7d8c2a4dc23ecd1e8fc28363.zip
op-kernel-dev-4e231c7962ce711c7d8c2a4dc23ecd1e8fc28363.tar.gz
perf: Fix up delayed_put_task_struct()
I missed a perf_event_ctxp user when converting it to an array. Pull this last user into perf_event.c as well and fix it up. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/exit.c4
-rw-r--r--kernel/perf_event.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/kernel/exit.c b/kernel/exit.c
index 0312022..e2bdf37 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -149,9 +149,7 @@ static void delayed_put_task_struct(struct rcu_head *rhp)
{
struct task_struct *tsk = container_of(rhp, struct task_struct, rcu);
-#ifdef CONFIG_PERF_EVENTS
- WARN_ON_ONCE(tsk->perf_event_ctxp);
-#endif
+ perf_event_delayed_put(tsk);
trace_sched_process_free(tsk);
put_task_struct(tsk);
}
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 9819a69..eaf1c5d 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -5893,6 +5893,14 @@ again:
}
}
+void perf_event_delayed_put(struct task_struct *task)
+{
+ int ctxn;
+
+ for_each_task_context_nr(ctxn)
+ WARN_ON_ONCE(task->perf_event_ctxp[ctxn]);
+}
+
/*
* inherit a event from parent task to child task:
*/
OpenPOWER on IntegriCloud