summaryrefslogtreecommitdiffstats
path: root/kernel/rcu
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2021-08-26 09:36:53 +0200
committerThomas Gleixner <tglx@linutronix.de>2021-08-27 14:28:49 +0200
commit6467822b8cc96e5feda98c7bf5c6329c6a896c91 (patch)
treee48f49c0c44f69ee2ea93b98e18d17bc5ea1c17d /kernel/rcu
parentlocking/rtmutex: Dequeue waiter on ww_mutex deadlock (diff)
downloadlinux-6467822b8cc96e5feda98c7bf5c6329c6a896c91.tar.xz
linux-6467822b8cc96e5feda98c7bf5c6329c6a896c91.zip
locking/rtmutex: Prevent spurious EDEADLK return caused by ww_mutexes
rtmutex based ww_mutexes can legitimately create a cycle in the lock graph which can be observed by a blocker which didn't cause the problem: P1: A, ww_A, ww_B P2: ww_B, ww_A P3: A P3 might therefore be trapped in the ww_mutex induced cycle and run into the lock depth limitation of rt_mutex_adjust_prio_chain() which returns -EDEADLK to the caller. Disable the deadlock detection walk when the chain walk observes a ww_mutex to prevent this looping. [ tglx: Split it apart and added changelog ] Reported-by: Sebastian Siewior <bigeasy@linutronix.de> Fixes: add461325ec5 ("locking/rtmutex: Extend the rtmutex core to support ww_mutex") Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/YSeWjCHoK4v5OcOt@hirez.programming.kicks-ass.net
Diffstat (limited to 'kernel/rcu')
0 files changed, 0 insertions, 0 deletions