diff options
| author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2017-09-19 18:36:42 -0400 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2017-10-19 15:13:36 -0400 |
| commit | 02a7c234e54052101164368ff981bd72f7acdd65 (patch) | |
| tree | 5819d6d63e9f824a702a4b8e90e87720c2b0fe45 | |
| parent | b88697810d7c1d102a529990f9071b0f14cfe6df (diff) | |
rcu: Suppress lockdep false-positive ->boost_mtx complaints
RCU priority boosting uses rt_mutex_init_proxy_locked() to initialize an
rt_mutex structure in locked state held by some other task. When that
other task releases it, lockdep complains (quite accurately, but a bit
uselessly) that the other task never acquired it. This complaint can
suppress other, more helpful, lockdep complaints, and in any case it is
a false positive.
This commit therefore switches from rt_mutex_unlock() to
rt_mutex_futex_unlock(), thereby avoiding the lockdep annotations.
Of course, if lockdep ever learns about rt_mutex_init_proxy_locked(),
addtional adjustments will be required.
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
| -rw-r--r-- | kernel/rcu/tree_plugin.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 969eae45f05d..1eaab96d1a3c 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h | |||
| @@ -531,7 +531,7 @@ void rcu_read_unlock_special(struct task_struct *t) | |||
| 531 | 531 | ||
| 532 | /* Unboost if we were boosted. */ | 532 | /* Unboost if we were boosted. */ |
| 533 | if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) | 533 | if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) |
| 534 | rt_mutex_unlock(&rnp->boost_mtx); | 534 | rt_mutex_futex_unlock(&rnp->boost_mtx); |
| 535 | 535 | ||
| 536 | /* | 536 | /* |
| 537 | * If this was the last task on the expedited lists, | 537 | * If this was the last task on the expedited lists, |
