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 2e12b166c6fcae7ac935f72d82c3a36d457aba4e..a04b6eeb55f827af27242d2859dc45520f897d4e 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);
 }