mac80211: never pass NULL params to ieee80211_if_add()
authorJohannes Berg <johannes.berg@intel.com>
Sat, 15 Dec 2018 09:03:11 +0000 (11:03 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 18 Dec 2018 12:17:26 +0000 (13:17 +0100)
This isn't really a problem now, but it means that the function
has a few NULL checks that are only relevant when coming from
the initial interface added in mac80211, and that's confusing.
Just pass non-NULL (but equivalently empty) in that case and
remove all the NULL checks.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/iface.c
net/mac80211/main.c

index 5836dde..6944ec7 100644 (file)
@@ -1799,7 +1799,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
                }
 
                ieee80211_assign_perm_addr(local, ndev->perm_addr, type);
-               if (params && is_valid_ether_addr(params->macaddr))
+               if (is_valid_ether_addr(params->macaddr))
                        memcpy(ndev->dev_addr, params->macaddr, ETH_ALEN);
                else
                        memcpy(ndev->dev_addr, ndev->perm_addr, ETH_ALEN);
@@ -1868,11 +1868,9 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
        ieee80211_setup_sdata(sdata, type);
 
        if (ndev) {
-               if (params) {
-                       ndev->ieee80211_ptr->use_4addr = params->use_4addr;
-                       if (type == NL80211_IFTYPE_STATION)
-                               sdata->u.mgd.use_4addr = params->use_4addr;
-               }
+               ndev->ieee80211_ptr->use_4addr = params->use_4addr;
+               if (type == NL80211_IFTYPE_STATION)
+                       sdata->u.mgd.use_4addr = params->use_4addr;
 
                ndev->features |= local->hw.netdev_features;
 
index 83e71e6..ada8e16 100644 (file)
@@ -1221,8 +1221,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
        /* add one default STA interface if supported */
        if (local->hw.wiphy->interface_modes & BIT(NL80211_IFTYPE_STATION) &&
            !ieee80211_hw_check(hw, NO_AUTO_VIF)) {
+               struct vif_params params = {0};
+
                result = ieee80211_if_add(local, "wlan%d", NET_NAME_ENUM, NULL,
-                                         NL80211_IFTYPE_STATION, NULL);
+                                         NL80211_IFTYPE_STATION, &params);
                if (result)
                        wiphy_warn(local->hw.wiphy,
                                   "Failed to add default virtual iface\n");