rcu: More info about potential deadlocks with rcu_read_unlock()
authorOleg Nesterov <oleg@redhat.com>
Sun, 28 Sep 2014 21:44:21 +0000 (23:44 +0200)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 13 Nov 2014 18:35:40 +0000 (10:35 -0800)
commitce36f2f3eb6613a73bc6f3a5256bde7dd3f95710
tree7c225c914aabb54c7ce3add5917386f27e67990a
parentb6331ae8afe4118884c4b6e14a213758d88422b2
rcu: More info about potential deadlocks with rcu_read_unlock()

The comment above rcu_read_unlock() explains the potential deadlock
if the caller holds one of the locks taken by rt_mutex_unlock() paths,
but it is not clear from this documentation that any lock which can
be taken from interrupt can lead to deadlock as well and we need to
take rt_mutex_lock() into account too.

The problem is that rt_mutex_lock() takes wait_lock without disabling
irqs, and thus an interrupt taking some LOCK can obviously race with
rcu_read_unlock_special() called with the same LOCK held.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
include/linux/rcupdate.h