mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
mac80211: Fix TDLS support validation in add_station handler
We need to verify whether the command is successful before allocating the station entry to avoid extra processing. This also fixes a memory leak on the error path. Signed-off-by: Jouni Malinen <j@w1.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
94d55d62bd
commit
e3a4cc2f07
@ -832,6 +832,12 @@ static int ieee80211_add_station(struct wiphy *wiphy, struct net_device *dev,
|
||||
if (is_multicast_ether_addr(mac))
|
||||
return -EINVAL;
|
||||
|
||||
/* Only TDLS-supporting stations can add TDLS peers */
|
||||
if ((params->sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) &&
|
||||
!((wiphy->flags & WIPHY_FLAG_SUPPORTS_TDLS) &&
|
||||
sdata->vif.type == NL80211_IFTYPE_STATION))
|
||||
return -ENOTSUPP;
|
||||
|
||||
sta = sta_info_alloc(sdata, mac, GFP_KERNEL);
|
||||
if (!sta)
|
||||
return -ENOMEM;
|
||||
@ -841,12 +847,6 @@ static int ieee80211_add_station(struct wiphy *wiphy, struct net_device *dev,
|
||||
|
||||
sta_apply_parameters(local, sta, params);
|
||||
|
||||
/* Only TDLS-supporting stations can add TDLS peers */
|
||||
if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) &&
|
||||
!((wiphy->flags & WIPHY_FLAG_SUPPORTS_TDLS) &&
|
||||
sdata->vif.type == NL80211_IFTYPE_STATION))
|
||||
return -ENOTSUPP;
|
||||
|
||||
rate_control_rate_init(sta);
|
||||
|
||||
layer2_update = sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
|
||||
|
Loading…
Reference in New Issue
Block a user