wireless: core: Reorder wiphy_register() notifications relevantly
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Wed, 13 Aug 2014 13:04:51 +0000 (16:04 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 25 Aug 2014 20:17:41 +0000 (16:17 -0400)
Currently it can send regulatory domain change notification before any
NEW_WIPHY notification. Moreover, if rfill_register() fails, calling
wiphy_unregister() will send a DEL_WIPHY though no NEW_WIPHY had been
sent previously.

Thus reordering so it properly notifies NEW_WIPHY before any other.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/wireless/core.c

index afee5e0..682babd 100644 (file)
@@ -635,6 +635,9 @@ int wiphy_register(struct wiphy *wiphy)
        if (IS_ERR(rdev->wiphy.debugfsdir))
                rdev->wiphy.debugfsdir = NULL;
 
+       cfg80211_debugfs_rdev_add(rdev);
+       nl80211_notify_wiphy(rdev, NL80211_CMD_NEW_WIPHY);
+
        if (wiphy->regulatory_flags & REGULATORY_CUSTOM_REG) {
                struct regulatory_request request;
 
@@ -646,8 +649,6 @@ int wiphy_register(struct wiphy *wiphy)
                nl80211_send_reg_change_event(&request);
        }
 
-       cfg80211_debugfs_rdev_add(rdev);
-
        rdev->wiphy.registered = true;
        rtnl_unlock();
 
@@ -659,8 +660,6 @@ int wiphy_register(struct wiphy *wiphy)
                return res;
        }
 
-       nl80211_notify_wiphy(rdev, NL80211_CMD_NEW_WIPHY);
-
        return 0;
 }
 EXPORT_SYMBOL(wiphy_register);