Loading net/mac80211/cfg.c +17 −3 Original line number Diff line number Diff line Loading @@ -718,12 +718,18 @@ static int ieee80211_del_station(struct wiphy *wiphy, struct net_device *dev, struct sta_info *sta; if (mac) { rcu_read_lock(); /* XXX: get sta belonging to dev */ sta = sta_info_get(local, mac); if (!sta) if (!sta) { rcu_read_unlock(); return -ENOENT; } sta_info_unlink(&sta); rcu_read_unlock(); sta_info_destroy(sta); } else sta_info_flush(local, sdata); Loading @@ -740,17 +746,23 @@ static int ieee80211_change_station(struct wiphy *wiphy, struct sta_info *sta; struct ieee80211_sub_if_data *vlansdata; rcu_read_lock(); /* XXX: get sta belonging to dev */ sta = sta_info_get(local, mac); if (!sta) if (!sta) { rcu_read_unlock(); return -ENOENT; } if (params->vlan && params->vlan != sta->sdata->dev) { vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN || vlansdata->vif.type != IEEE80211_IF_TYPE_AP) vlansdata->vif.type != IEEE80211_IF_TYPE_AP) { rcu_read_unlock(); return -EINVAL; } sta->sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); ieee80211_send_layer2_update(sta); Loading @@ -758,6 +770,8 @@ static int ieee80211_change_station(struct wiphy *wiphy, sta_apply_parameters(local, sta, params); rcu_read_unlock(); return 0; } Loading net/mac80211/wext.c +5 −0 Original line number Diff line number Diff line Loading @@ -980,6 +980,8 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct sta_info *sta = NULL; rcu_read_lock(); if (sdata->vif.type == IEEE80211_IF_TYPE_STA || sdata->vif.type == IEEE80211_IF_TYPE_IBSS) sta = sta_info_get(local, sdata->u.sta.bssid); Loading @@ -996,6 +998,9 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev wstats->qual.noise = sta->last_noise; wstats->qual.updated = local->wstats_flags; } rcu_read_unlock(); return wstats; } Loading Loading
net/mac80211/cfg.c +17 −3 Original line number Diff line number Diff line Loading @@ -718,12 +718,18 @@ static int ieee80211_del_station(struct wiphy *wiphy, struct net_device *dev, struct sta_info *sta; if (mac) { rcu_read_lock(); /* XXX: get sta belonging to dev */ sta = sta_info_get(local, mac); if (!sta) if (!sta) { rcu_read_unlock(); return -ENOENT; } sta_info_unlink(&sta); rcu_read_unlock(); sta_info_destroy(sta); } else sta_info_flush(local, sdata); Loading @@ -740,17 +746,23 @@ static int ieee80211_change_station(struct wiphy *wiphy, struct sta_info *sta; struct ieee80211_sub_if_data *vlansdata; rcu_read_lock(); /* XXX: get sta belonging to dev */ sta = sta_info_get(local, mac); if (!sta) if (!sta) { rcu_read_unlock(); return -ENOENT; } if (params->vlan && params->vlan != sta->sdata->dev) { vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN || vlansdata->vif.type != IEEE80211_IF_TYPE_AP) vlansdata->vif.type != IEEE80211_IF_TYPE_AP) { rcu_read_unlock(); return -EINVAL; } sta->sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); ieee80211_send_layer2_update(sta); Loading @@ -758,6 +770,8 @@ static int ieee80211_change_station(struct wiphy *wiphy, sta_apply_parameters(local, sta, params); rcu_read_unlock(); return 0; } Loading
net/mac80211/wext.c +5 −0 Original line number Diff line number Diff line Loading @@ -980,6 +980,8 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct sta_info *sta = NULL; rcu_read_lock(); if (sdata->vif.type == IEEE80211_IF_TYPE_STA || sdata->vif.type == IEEE80211_IF_TYPE_IBSS) sta = sta_info_get(local, sdata->u.sta.bssid); Loading @@ -996,6 +998,9 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev wstats->qual.noise = sta->last_noise; wstats->qual.updated = local->wstats_flags; } rcu_read_unlock(); return wstats; } Loading