Messages in this thread Patch in this message | | | From | "Paul E. McKenney" <> | Subject | [PATCH tip/core/rcu 7/9] rcu: Pretend ->boost_mtx acquired legitimately | Date | Wed, 4 Oct 2017 14:29:33 -0700 |
| |
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 uses the mutex_acquire() macro to make it look like that other process legitimately acquired the lock, thus suppressing this lockdep false-positive complaint.
Of course, if lockdep ever learns about rt_mutex_init_proxy_locked(), this commit will need to be reverted.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> --- kernel/rcu/tree_plugin.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index fed95fa941e6..60bfb16c9a1a 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -529,8 +529,11 @@ void rcu_read_unlock_special(struct task_struct *t) } /* Unboost if we were boosted. */ - if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) + if (IS_ENABLED(CONFIG_RCU_BOOST) && drop_boost_mutex) { + /* For lockdep, pretend we acquired lock honestly. */ + mutex_acquire(&rnp->boost_mtx.dep_map, 0, 0, _RET_IP_); rt_mutex_unlock(&rnp->boost_mtx); + } /* * If this was the last task on the expedited lists, -- 2.5.2
| |