sched: Fix racy invocation of fixup_busy_time via move_queued_task
set_task_cpu uses fixup_busy_time to redistribute a task's load
information between source and destination runqueues. fixup_busy_time
assumes that both source and destination runqueue locks have been
acquired if the task is not being concurrently woken up. However
this is no longer true, since move_queued_task does not acquire the
destination CPU's runqueue lock due to optimizations brought in by
recent kernels.
Acquire both source and destination runqueue locks before invoking
set_task_cpu in move_queued_tasks.
Change-Id: I39fadf0508ad42e511db43428e52c8aa8bf9baf6
Signed-off-by:
Vikram Mulukutla <markivx@codeaurora.org>
Loading
Please register or sign in to comment