diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-28 15:17:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-28 15:17:40 -0400 |
commit | e6cb6281ef8547fea1243b1c2a4e0f08d9b86ae1 (patch) | |
tree | 4444be8141566dec3c88ff5fa7354cbe4cebccdc /kernel/sched.c | |
parent | ab8aadbda7d59d4674ef614cba2a67c50667a6af (diff) | |
parent | 8695159967957015f8dfb49315d6f88e111d90e0 (diff) |
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
sched: silence PROVE_RCU in sched_fork()
idr: fix RCU lockdep splat in idr_get_next()
rcu: apply RCU protection to wake_affine()
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index f8b8996228dd..a2d215d132f6 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -2494,7 +2494,16 @@ void sched_fork(struct task_struct *p, int clone_flags) | |||
2494 | if (p->sched_class->task_fork) | 2494 | if (p->sched_class->task_fork) |
2495 | p->sched_class->task_fork(p); | 2495 | p->sched_class->task_fork(p); |
2496 | 2496 | ||
2497 | /* | ||
2498 | * The child is not yet in the pid-hash so no cgroup attach races, | ||
2499 | * and the cgroup is pinned to this child due to cgroup_fork() | ||
2500 | * is ran before sched_fork(). | ||
2501 | * | ||
2502 | * Silence PROVE_RCU. | ||
2503 | */ | ||
2504 | rcu_read_lock(); | ||
2497 | set_task_cpu(p, cpu); | 2505 | set_task_cpu(p, cpu); |
2506 | rcu_read_unlock(); | ||
2498 | 2507 | ||
2499 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) | 2508 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) |
2500 | if (likely(sched_info_on())) | 2509 | if (likely(sched_info_on())) |