diff --git a/debian/patches/features/all/rt/dump-stack-don-t-disable-preemption-during-trace.patch b/debian/patches/features/all/rt/dump-stack-don-t-disable-preemption-during-trace.patch index c2e828683..7641ae317 100644 --- a/debian/patches/features/all/rt/dump-stack-don-t-disable-preemption-during-trace.patch +++ b/debian/patches/features/all/rt/dump-stack-don-t-disable-preemption-during-trace.patch @@ -79,21 +79,11 @@ Signed-off-by: Sebastian Andrzej Siewior show_trace_log_lvl(task, regs, sp, bp, log_lvl); --- a/lib/dump_stack.c +++ b/lib/dump_stack.c -@@ -33,7 +33,7 @@ asmlinkage __visible void dump_stack(voi +@@ -34,6 +34,7 @@ asmlinkage __visible void dump_stack(voi * Permit this cpu to perform nested stack dumps while serialising * against other CPUs */ -- preempt_disable(); -+ migrate_disable(); - ++ retry: + local_irq_save(flags); cpu = smp_processor_id(); -@@ -52,7 +52,7 @@ asmlinkage __visible void dump_stack(voi - if (!was_locked) - atomic_set(&dump_lock, -1); - -- preempt_enable(); -+ migrate_enable(); - } - #else - asmlinkage __visible void dump_stack(void) diff --git a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch b/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch index e20338b05..2d2188f34 100644 --- a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch +++ b/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch @@ -16,7 +16,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -1812,6 +1812,16 @@ static int futex_requeue(u32 __user *uad +@@ -1812,6 +1812,16 @@ retry_private: requeue_pi_wake_futex(this, &key2, hb2); drop_count++; continue; @@ -109,7 +109,7 @@ Signed-off-by: Thomas Gleixner /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -2753,9 +2798,10 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2753,14 +2798,15 @@ static int futex_wait_requeue_pi(u32 __u * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -117,12 +117,17 @@ Signed-off-by: Thomas Gleixner + spin_lock(&hb2->lock); + BUG_ON(&hb2->lock != q.lock_ptr); ret = fixup_pi_state_owner(uaddr2, &q, current); + /* + * Drop the reference to the pi state which + * the requeue_pi() code acquired for us. + */ + free_pi_state(q.pi_state); - spin_unlock(q.lock_ptr); + spin_unlock(&hb2->lock); } } else { /* -@@ -2768,7 +2814,8 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2773,7 +2819,8 @@ static int futex_wait_requeue_pi(u32 __u ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter); debug_rt_mutex_free_waiter(&rt_waiter);