Commit b303835d authored by Johannes Berg's avatar Johannes Berg

wifi: mac80211: accept STA changes without link changes

If there's no link ID, then check that there are no changes to
the link, and if so accept them, unless a new link is created.
While at it, reject creating a new link without an address.

This fixes authorizing an MLD (peer) that has no link 0.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 7dad3e39
...@@ -1610,6 +1610,18 @@ static int sta_link_apply_parameters(struct ieee80211_local *local, ...@@ -1610,6 +1610,18 @@ static int sta_link_apply_parameters(struct ieee80211_local *local,
rcu_dereference_protected(sta->link[link_id], rcu_dereference_protected(sta->link[link_id],
lockdep_is_held(&local->sta_mtx)); lockdep_is_held(&local->sta_mtx));
/*
* If there are no changes, then accept a link that doesn't exist,
* unless it's a new link.
*/
if (params->link_id < 0 && !new_link &&
!params->link_mac && !params->txpwr_set &&
!params->supported_rates_len &&
!params->ht_capa && !params->vht_capa &&
!params->he_capa && !params->eht_capa &&
!params->opmode_notif_used)
return 0;
if (!link || !link_sta) if (!link || !link_sta)
return -EINVAL; return -EINVAL;
...@@ -1625,6 +1637,8 @@ static int sta_link_apply_parameters(struct ieee80211_local *local, ...@@ -1625,6 +1637,8 @@ static int sta_link_apply_parameters(struct ieee80211_local *local,
params->link_mac)) { params->link_mac)) {
return -EINVAL; return -EINVAL;
} }
} else if (new_link) {
return -EINVAL;
} }
if (params->txpwr_set) { if (params->txpwr_set) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment