summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorckolivas <kernel@kolivas.org>2016-10-10 18:19:42 +1100
committerckolivas <kernel@kolivas.org>2016-10-10 18:19:42 +1100
commitf9c025106db10256061200abcf9a6cae833150b4 (patch)
treeeb929e6c19973dbee4d32a9034fe6bf38999590e
parentab2f55039b9d1550d496299d5626eefcd8617d2f (diff)
Lock pi_lock as well when migrating a task in finish_lock_switch.
-rw-r--r--kernel/sched/MuQSS.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/sched/MuQSS.c b/kernel/sched/MuQSS.c
index 0de7d747df58..032bddac881e 100644
--- a/kernel/sched/MuQSS.c
+++ b/kernel/sched/MuQSS.c
@@ -698,6 +698,7 @@ static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
raw_spin_unlock(&rq->lock);
+ raw_spin_lock(&prev->pi_lock);
rq_lock(rq2);
/* Check that someone else hasn't already queued prev */
if (likely(task_on_rq_migrating(prev) && !task_queued(prev))) {
@@ -707,6 +708,7 @@ static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
resched_if_idle(rq2);
}
rq_unlock(rq2);
+ raw_spin_unlock(&prev->pi_lock);
local_irq_enable();
} else