diff mbox series

[RT] Linux v5.10.226-rt118-rc1

Message ID Zy_ZZWELEwU8f0VY@uudg.org
State New
Headers show
Series [RT] Linux v5.10.226-rt118-rc1 | expand

Commit Message

Luis Claudio R. Goncalves Nov. 9, 2024, 9:51 p.m. UTC
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 mbox series

Patch

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);
 	}