diff options
Diffstat (limited to 'debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch')
-rw-r--r-- | debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch b/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch new file mode 100644 index 000000000..b2f940fe5 --- /dev/null +++ b/debian/patches-rt/0274-Revert-futex-workaround-migrate_disable-enable-in-di.patch @@ -0,0 +1,66 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Wed, 26 Jun 2019 17:44:27 +0200 +Subject: [PATCH 274/342] Revert "futex: workaround migrate_disable/enable in + different context" +Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=188a1d1aaac5e0288814560fad22b3c638bad3bd + +[ Upstream commit a71221d81cc4873891ae44f3aa02df596079b786 ] + +Drop the RT fixup, the futex code will be changed to avoid the need for +the workaround. + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> +--- + kernel/futex.c | 19 ------------------- + 1 file changed, 19 deletions(-) + +diff --git a/kernel/futex.c b/kernel/futex.c +index bcd01b5a47df..9bcfdcffb2dd 100644 +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2998,14 +2998,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, + * before __rt_mutex_start_proxy_lock() is done. + */ + raw_spin_lock_irq(&q.pi_state->pi_mutex.wait_lock); +- /* +- * the migrate_disable() here disables migration in the in_atomic() fast +- * path which is enabled again in the following spin_unlock(). We have +- * one migrate_disable() pending in the slow-path which is reversed +- * after the raw_spin_unlock_irq() where we leave the atomic context. +- */ +- migrate_disable(); +- + spin_unlock(q.lock_ptr); + /* + * __rt_mutex_start_proxy_lock() unconditionally enqueues the @rt_waiter +@@ -3014,7 +3006,6 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, + */ + ret = __rt_mutex_start_proxy_lock(&q.pi_state->pi_mutex, &rt_waiter, current); + raw_spin_unlock_irq(&q.pi_state->pi_mutex.wait_lock); +- migrate_enable(); + + if (ret) { + if (ret == 1) +@@ -3149,21 +3140,11 @@ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) + * rt_waiter. Also see the WARN in wake_futex_pi(). + */ + raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); +- /* +- * Magic trickery for now to make the RT migrate disable +- * logic happy. The following spin_unlock() happens with +- * interrupts disabled so the internal migrate_enable() +- * won't undo the migrate_disable() which was issued when +- * locking hb->lock. +- */ +- migrate_disable(); + spin_unlock(&hb->lock); + + /* drops pi_state->pi_mutex.wait_lock */ + ret = wake_futex_pi(uaddr, uval, pi_state); + +- migrate_enable(); +- + put_pi_state(pi_state); + + /* |