36 lines
1.3 KiB
Diff
36 lines
1.3 KiB
Diff
From 4845741567c819e587a0416e329a751af3111fd1 Mon Sep 17 00:00:00 2001
|
|
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
Date: Thu, 7 Sep 2017 12:38:47 +0200
|
|
Subject: [PATCH 341/365] 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: stable-rt@vger.kernel.org #v4.9.18-rt14+
|
|
Reported-by: Gusenleitner Klaus <gus@keba.com>
|
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
---
|
|
kernel/locking/rtmutex.c | 1 -
|
|
1 file changed, 1 deletion(-)
|
|
|
|
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
|
|
index bb6a15456e62..1f3ceaf15588 100644
|
|
--- a/kernel/locking/rtmutex.c
|
|
+++ b/kernel/locking/rtmutex.c
|
|
@@ -2312,7 +2312,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.28.0
|
|
|