Files
linux/kernel
Dmitry Adamushko ce96b5ac74 sched: fix __set_task_cpu() SMP race
Grant Wilson has reported rare SCHED_FAIR_USER crashes on his quad-core
system, which crashes can only be explained via runqueue corruption.

there is a narrow SMP race in __set_task_cpu(): after ->cpu is set up to
a new value, task_rq_lock(p, ...) can be successfuly executed on another
CPU. We must ensure that updates of per-task data have been completed by
this moment.

this bug has been hiding in the Linux scheduler for an eternity (we never
had any explicit barrier for task->cpu in set_task_cpu() - so the bug was
introduced in 2.5.1), but only became visible via set_task_cfs_rq() being
accidentally put after the task->cpu update. It also probably needs a
sufficiently out-of-order CPU to trigger.

Reported-by: Grant Wilson <grant.wilson@zen.co.uk>
Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2007-11-15 20:57:40 +01:00
..
2007-11-14 18:45:43 -08:00
2007-10-18 14:37:24 -07:00
2007-10-21 02:37:45 -04:00
2007-10-21 02:37:45 -04:00
2007-10-21 02:37:45 -04:00
2007-10-21 02:37:45 -04:00
2007-11-14 18:45:37 -08:00
2007-10-18 14:37:24 -07:00
2007-10-19 11:53:56 -07:00
2007-10-18 14:37:26 -07:00
2006-12-07 08:39:36 -08:00
2007-10-19 11:53:54 -07:00
2007-10-19 11:53:49 -07:00
2007-07-16 09:05:50 -07:00
2007-10-16 09:43:10 -07:00
2006-12-04 02:00:22 -05:00
2007-10-19 11:53:54 -07:00
2007-10-11 22:11:12 +02:00
2007-10-19 11:53:34 -07:00
2007-11-14 18:45:43 -08:00
2007-10-18 14:37:24 -07:00
2007-07-16 09:05:49 -07:00
2007-11-15 20:57:40 +01:00
2007-07-16 09:05:50 -07:00
2007-10-18 14:37:24 -07:00
2007-05-09 08:57:56 +02:00