summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorCon Kolivas <kernel@kolivas.org>2016-10-25 22:34:04 +1100
committerCon Kolivas <kernel@kolivas.org>2016-10-25 22:34:46 +1100
commite839d768a1a42dfd13cf686a36bcaea0beb4b423 (patch)
treebb565b0c777e6b7b30f666c650bd0d37e50cf919 /kernel
parenta44b84f414e70bca4a5c14e6bd8f82a16aa3b975 (diff)
Lock rq in do_set_cpus_allowed before resched_task.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/MuQSS.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sched/MuQSS.c b/kernel/sched/MuQSS.c
index 7cd516a8fb4c..781ce7baa95a 100644
--- a/kernel/sched/MuQSS.c
+++ b/kernel/sched/MuQSS.c
@@ -5641,8 +5641,12 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
{
__do_set_cpus_allowed(p, new_mask);
if (needs_other_cpu(p, task_cpu(p))) {
+ struct rq *rq;
+
set_task_cpu(p, valid_task_cpu(p));
+ rq = __task_rq_lock(p);
resched_task(p);
+ __task_rq_unlock(rq);
}
}