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-sta...@vger.kernel.org
Reported-by: Gusenleitner Klaus <g...@keba.com>
Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.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

Reply via email to