diff options
author | Mark Brown <broonie@linaro.org> | 2013-10-04 00:30:17 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-10-04 00:30:17 +0100 |
commit | 18d8ff256f495bee7bcf016d9006d4b330e29260 (patch) | |
tree | e3d01967862b312711e27bd790c57e20c723d0c1 /kernel/sched/fair.c | |
parent | 2a0458773656240cf6fa97f1126c92dcddf8ab90 (diff) | |
parent | 8c15abc94c737f9120d3d4a550abbcbb9be121f6 (diff) |
Merge tag 'v3.10.14' into linux-linaro-lsk
This is the 3.10.14 stable release
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r-- | kernel/sched/fair.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 5f277f2d34d..1d171effac2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7040,11 +7040,15 @@ static void task_fork_fair(struct task_struct *p) cfs_rq = task_cfs_rq(current); curr = cfs_rq->curr; - if (unlikely(task_cpu(p) != this_cpu)) { - rcu_read_lock(); - __set_task_cpu(p, this_cpu); - rcu_read_unlock(); - } + /* + * Not only the cpu but also the task_group of the parent might have + * been changed after parent->se.parent,cfs_rq were copied to + * child->se.parent,cfs_rq. So call __set_task_cpu() to make those + * of child point to valid ones. + */ + rcu_read_lock(); + __set_task_cpu(p, this_cpu); + rcu_read_unlock(); update_curr(cfs_rq); |