From 31a3fa87f4f02158bfb57b93ef0b69bf1c1ef9c5 Mon Sep 17 00:00:00 2001 From: ckolivas Date: Mon, 10 Oct 2016 18:19:42 +1100 Subject: [PATCH 17/80] Lock pi_lock as well when migrating a task in finish_lock_switch. --- kernel/sched/MuQSS.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/sched/MuQSS.c b/kernel/sched/MuQSS.c index 95063b5..416924b 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 -- 2.7.4