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:27:22 +1100
commit31a3fa87f4f02158bfb57b93ef0b69bf1c1ef9c5 (patch)
tree16813dd08aace27f1be286620f83a97dbef6ae49
parent8d5ded85ef9200ec67bc1f8f5017815a73a9afd8 (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 95063b5e5cc5..416924bc025c 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