Dear RT Folks, This is the RT stable review cycle of patch v5.10.226-rt118-rc1. Please scream at me if I messed something up. Please test the patches too. The -rc release is also available on kernel.org https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git on the v5.10-rt-next branch. If all goes well, this patch will be converted to the next main release on 2024-11-15. Signing key fingerprint: 9354 0649 9972 8D31 D464 D140 F394 A423 F8E6 7C26 All keys used for the above files and repositories can be found on the following git repository: git://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git Enjoy! Luis Changes from v5.10.225-rt117: There was a merge conflict due to the backport of 1401da1486dc1 ("rtmutex: Drop rt_mutex::wait_lock before scheduling"). This commit added the lock argument to rt_mutex_handle_deadlock function. diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c index b110fc57f7330..0b40709c3285b 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -1591,6 +1591,7 @@ __rt_mutex_slowlock(struct rt_mutex *lock, int state, } static void rt_mutex_handle_deadlock(int res, int detect_deadlock, + struct rt_mutex *lock, struct rt_mutex_waiter *w) { /* @@ -1600,6 +1601,8 @@ static void rt_mutex_handle_deadlock(int res, int detect_deadlock, if (res != -EDEADLOCK || detect_deadlock) return; + raw_spin_unlock_irq(&lock->wait_lock); + while (1) { set_current_state(TASK_INTERRUPTIBLE); schedule(); @@ -1730,7 +1733,7 @@ int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, remove_waiter(lock, waiter); /* ww_mutex wants to report EDEADLK/EALREADY, let it */ if (!ww_ctx) - rt_mutex_handle_deadlock(ret, chwalk, waiter); + rt_mutex_handle_deadlock(ret, chwalk, lock, waiter); } else if (ww_ctx) { ww_mutex_account_lock(lock, ww_ctx); }