[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20170921184941.s2l6qc5atecxxbmv@linutronix.de>
Date: Thu, 21 Sep 2017 20:49:41 +0200
From: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: linux-kernel@...r.kernel.org,
Peter Zijlstra <peterz@...radead.org>, tglx@...utronix.de
Subject: [PATCH RT v2] locking/rtmutex: don't drop the wait_lock twice
Since the futex rework, __rt_mutex_start_proxy_lock() does no longer
acquire the wait_lock so it must not drop it. Otherwise the lock is not
only unlocked twice but also the preemption counter is underflown.
It is okay to remove that line because this function does not disable
interrupts nor does it acquire the ->wait_lock. The caller does this
so it is wrong do it here (after the futex rework).
Cc: rt-stable@...r.kernel.org
Reported-by: Gusenleitner Klaus <gus@...a.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@...utronix.de>
---
v1…v2: update patch description.
kernel/locking/rtmutex.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index f03876322d4a..79f49d73e4d0 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -2281,7 +2281,6 @@ int __rt_mutex_start_proxy_lock(struct rt_mutex *lock,
raw_spin_lock(&task->pi_lock);
if (task->pi_blocked_on) {
raw_spin_unlock(&task->pi_lock);
- raw_spin_unlock_irq(&lock->wait_lock);
return -EAGAIN;
}
task->pi_blocked_on = PI_REQUEUE_INPROGRESS;
--
2.14.1
Powered by blists - more mailing lists