diff options
author | Johannes Berg <johannes.berg@intel.com> | 2022-07-06 10:09:57 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2022-07-15 11:43:19 +0200 |
commit | 939c4c7e823b161701637720016999ef1f4ae4db (patch) | |
tree | 2a93cbb06cddba8db5b63a97088eb1410cd7b27c /net/mac80211 | |
parent | cdf0a0a80c841cfede6926d417a8756ea4c52d26 (diff) | |
download | linux-stable-939c4c7e823b161701637720016999ef1f4ae4db.tar.gz linux-stable-939c4c7e823b161701637720016999ef1f4ae4db.tar.bz2 linux-stable-939c4c7e823b161701637720016999ef1f4ae4db.zip |
wifi: mac80211: tighten locking check
When we remove a link that doesn't have a channel context,
we don't really need the local->mtx locking. Tighten the
check here.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/chan.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c index 92fe40539091..5ab210706123 100644 --- a/net/mac80211/chan.c +++ b/net/mac80211/chan.c @@ -1991,10 +1991,11 @@ void ieee80211_link_release_channel(struct ieee80211_link_data *link) WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); - lockdep_assert_held(&sdata->local->mtx); - mutex_lock(&sdata->local->chanctx_mtx); - __ieee80211_link_release_channel(link); + if (rcu_access_pointer(link->conf->chanctx_conf)) { + lockdep_assert_held(&sdata->local->mtx); + __ieee80211_link_release_channel(link); + } mutex_unlock(&sdata->local->chanctx_mtx); } |