From 1bbd77694d7e844dba8728112db0450952518dd4 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 22 Jun 2010 11:44:53 +0200 Subject: [PATCH] --- yaml --- r: 200596 b: refs/heads/master c: 8695159967957015f8dfb49315d6f88e111d90e0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index bed46b33c203..e06d41d10606 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 94bfa3b6692c7a3f6f119596724204ec975d3ef0 +refs/heads/master: 8695159967957015f8dfb49315d6f88e111d90e0 diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index f8b8996228dd..a2d215d132f6 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -2494,7 +2494,16 @@ void sched_fork(struct task_struct *p, int clone_flags) if (p->sched_class->task_fork) p->sched_class->task_fork(p); + /* + * The child is not yet in the pid-hash so no cgroup attach races, + * and the cgroup is pinned to this child due to cgroup_fork() + * is ran before sched_fork(). + * + * Silence PROVE_RCU. + */ + rcu_read_lock(); set_task_cpu(p, cpu); + rcu_read_unlock(); #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) if (likely(sched_info_on()))