Files
android_kernel_xiaomi_sm8450/kernel
Dmitry Adamushko 08ec3df510 sched: fix __pick_next_entity()
The thing is that __pick_next_entity() must never be called when
first_fair(cfs_rq) == NULL. It wouldn't be a problem, should 'run_node'
be the very first field of 'struct sched_entity' (and it's the second).

The 'nr_running != 0' check is _not_ enough, due to the fact that
'current' is not within the tree. Generic paths are ok (e.g. schedule()
as put_prev_task() is called previously)... I'm more worried about e.g.
migration_call() -> CPU_DEAD_FROZEN -> migrate_dead_tasks()... if
'current' == rq->idle, no problems.. if it's one of the SCHED_NORMAL
tasks (or imagine, some other use-cases in the future -- i.e. we should
not make outer world dependent on internal details of sched_fair class)
-- it may be "Houston, we've got a problem" case.

it's +16 bytes to the ".text". Another variant is to make 'run_node' the
first data member of 'struct sched_entity' but an additional check (se !
= NULL) is still needed in pick_next_entity().

Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
2007-10-15 17:00:13 +02:00
..
2007-08-31 01:42:23 -07:00
2007-07-16 09:05:47 -07:00
2007-08-22 19:52:44 -07:00
2007-07-18 08:47:40 -07:00
2007-09-20 13:19:59 -07:00
2007-10-01 07:52:23 -07:00
2007-10-01 07:52:23 -07:00
2006-12-07 08:39:36 -08:00
2007-07-16 09:05:50 -07:00
2007-08-11 15:47:42 -07:00
2007-07-20 12:01:34 -07:00
2006-12-04 02:00:22 -05:00
2007-07-31 15:39:40 -07:00
2007-07-16 09:05:47 -07:00
2007-07-19 10:04:49 -07:00
2007-08-11 15:47:42 -07:00
2007-07-16 09:05:49 -07:00
2007-07-16 09:05:49 -07:00
2007-07-16 09:05:49 -07:00
2007-10-15 17:00:13 +02:00
2007-10-15 17:00:12 +02:00
2007-07-16 09:05:50 -07:00
2007-10-01 07:52:23 -07:00
2007-10-15 17:00:09 +02:00
2007-05-09 08:57:56 +02:00
2007-08-27 10:27:48 -07:00