wifi: cfg80211: move wowlan disable under locks
authorJohannes Berg <johannes.berg@intel.com>
Tue, 6 Jun 2023 12:49:22 +0000 (14:49 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 7 Jun 2023 17:53:09 +0000 (19:53 +0200)
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>
net/wireless/core.c

index 2e12b16..a04b6ee 100644 (file)
@@ -1065,6 +1065,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();
 
@@ -1080,10 +1084,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);
 }