wifi: cfg80211: move wowlan disable under locks
authorJohannes Berg <johannes.berg@intel.com>
Tue, 6 Jun 2023 12:49:22 +0000 (14:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Oct 2023 20:00:39 +0000 (22:00 +0200)
[ Upstream commit a993df0f9143e63eca38c96a30daf08db99a98a3 ]

This is a driver callback, and the driver should be able
to assume that it's called with the wiphy lock held. Move
the call up so that's true, it has no other effect since
the device is already unregistering and we cannot reach
this function through other paths.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Stable-dep-of: 37c20b2effe9 ("wifi: cfg80211: fix cqm_config access race")
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/wireless/core.c

index 9ac7c54..28ae86c 100644 (file)
@@ -1049,6 +1049,10 @@ void wiphy_unregister(struct wiphy *wiphy)
        cfg80211_rdev_list_generation++;
        device_del(&rdev->wiphy.dev);
 
+#ifdef CONFIG_PM
+       if (rdev->wiphy.wowlan_config && rdev->ops->set_wakeup)
+               rdev_set_wakeup(rdev, false);
+#endif
        wiphy_unlock(&rdev->wiphy);
        rtnl_unlock();
 
@@ -1064,10 +1068,6 @@ void wiphy_unregister(struct wiphy *wiphy)
        flush_work(&rdev->mgmt_registrations_update_wk);
        flush_work(&rdev->background_cac_abort_wk);
 
-#ifdef CONFIG_PM
-       if (rdev->wiphy.wowlan_config && rdev->ops->set_wakeup)
-               rdev_set_wakeup(rdev, false);
-#endif
        cfg80211_rdev_free_wowlan(rdev);
        cfg80211_rdev_free_coalesce(rdev);
 }