aboutsummaryrefslogtreecommitdiff
path: root/drivers/ipack
diff options
context:
space:
mode:
authorKirill Tkhai <tkhai@yandex.ru>2014-05-20 13:33:42 +0400
committerShow Liu <show.liu@linaro.org>2014-06-18 12:05:24 +0800
commitf4c60f94f1a1385602a488cfc1ef2180e15309bb (patch)
tree9631d1c81cda92730d83579d11bb240524df5fb8 /drivers/ipack
parentccdbf63dc46377d8dc921b948fc073a4ded3348c (diff)
sched/dl: Fix race in dl_task_timer()
commit 0f397f2c90ce68821ee864c2c53baafe78de765d upstream. Throttled task is still on rq, and it may be moved to other cpu if user is playing with sched_setaffinity(). Therefore, unlocked task_rq() access makes the race. Juri Lelli reports he got this race when dl_bandwidth_enabled() was not set. Other thing, pointed by Peter Zijlstra: "Now I suppose the problem can still actually happen when you change the root domain and trigger a effective affinity change that way". To fix that we do the same as made in __task_rq_lock(). We do not use __task_rq_lock() itself, because it has a useful lockdep check, which is not correct in case of dl_task_timer(). We do not need pi_lock locked here. This case is an exception (PeterZ): "The only reason we don't strictly need ->pi_lock now is because we're guaranteed to have p->state == TASK_RUNNING here and are thus free of ttwu races". Signed-off-by: Kirill Tkhai <tkhai@yandex.ru> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/3056991400578422@web14g.yandex.ru Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/ipack')
0 files changed, 0 insertions, 0 deletions