summary refs log tree commit diff
path: root/net/wireless
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2023-06-06 14:34:48 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-06-21 16:00:54 +0200
commitb11f953a61e95812af86fb24aad4ea10d309c84c (patch)
tree76b580452ad77b8d4524f77a7739b927edea3ac0 /net/wireless
parent9a9adc42a590208ad3e912c605a7b51b66a6b13f (diff)
downloadlinux-b11f953a61e95812af86fb24aad4ea10d309c84c.tar.gz
wifi: cfg80211: fix locking in regulatory disconnect
commit f7e60032c6618dfd643c7210d5cba2789e2de2e2 upstream.

This should use wiphy_lock() now instead of requiring the
RTNL, since __cfg80211_leave() via cfg80211_leave() is now
requiring that lock to be held.

Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/reg.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 4f3f31244e8b..50b16e643f38 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -2478,11 +2478,11 @@ static void reg_leave_invalid_chans(struct wiphy *wiphy)
 	struct wireless_dev *wdev;
 	struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
 
-	ASSERT_RTNL();
-
+	wiphy_lock(wiphy);
 	list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list)
 		if (!reg_wdev_chan_valid(wiphy, wdev))
 			cfg80211_leave(rdev, wdev);
+	wiphy_unlock(wiphy);
 }
 
 static void reg_check_chans_work(struct work_struct *work)