From c83a851f7d24f127f713a8a20d98eb5cad6ef9e8 Mon Sep 17 00:00:00 2001 From: Pavankumar Kondeti Date: Wed, 18 Nov 2020 08:58:35 +0530 Subject: [PATCH] sched: Fix "releasing a pinned lock" lockdep warning WALT requires both src and dst runqueue locks to be held during migration. So a double_lock_balance() is added in move_queued_task() before calling set_task_cpu(). However, releasing the src rq lock, which is pinned is giving a lockdep warning. Fix this by unpinning the lock before calling double_lock_balance. Change-Id: I64dec0701b3467185cf53f311ebb521c6a822e88 Signed-off-by: Pavankumar Kondeti --- kernel/sched/core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 73de05db7549..1167348562a5 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1540,6 +1540,7 @@ static struct rq *move_queued_task(struct rq *rq, struct rq_flags *rf, WRITE_ONCE(p->on_rq, TASK_ON_RQ_MIGRATING); dequeue_task(rq, p, DEQUEUE_NOCLOCK); + rq_unpin_lock(rq, rf); double_lock_balance(rq, cpu_rq(new_cpu)); if (!(rq->clock_update_flags & RQCF_UPDATED)) update_rq_clock(rq);