2020-04-09 08:30:53

by Madhuparna Bhowmik

[permalink] [raw]
Subject: [PATCH 4/4] net: mac80211: mlme.c: Add lockdep condition for RCU list usage

From: Madhuparna Bhowmik <[email protected]>

ieee80211_add_vht_ie() is called with sdata->wdev.mtx held from
ieee80211_send_assoc(). Add lockdep condition to avoid false positive
warnings.

Signed-off-by: Madhuparna Bhowmik <[email protected]>
---
net/mac80211/mlme.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 16d75da0996a..ef64b3e91ce6 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -590,7 +590,8 @@ static void ieee80211_add_vht_ie(struct ieee80211_sub_if_data *sdata,
bool disable_mu_mimo = false;
struct ieee80211_sub_if_data *other;

- list_for_each_entry_rcu(other, &local->interfaces, list) {
+ list_for_each_entry_rcu(other, &local->interfaces, list,
+ lockdep_is_held(&sdata->wdev.mtx)) {
if (other->vif.mu_mimo_owner) {
disable_mu_mimo = true;
break;
--
2.17.1


2020-04-24 09:26:44

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 4/4] net: mac80211: mlme.c: Add lockdep condition for RCU list usage

On Thu, 2020-04-09 at 13:59 +0530, [email protected] wrote:
> From: Madhuparna Bhowmik <[email protected]>
>
> ieee80211_add_vht_ie() is called with sdata->wdev.mtx held from
> ieee80211_send_assoc(). Add lockdep condition to avoid false positive
> warnings.

Again, wrong lock!

Over the course of the three patches, you've now claimed that any one of

* RTNL,
* local->iflist_mtx,
* local->mtx, and
* sdata->wdev.mtx

are sufficient to iterate the interface list, but only the first two are
really true.

johannes