提交 ce04abc3 编写于 作者: J Johannes Berg

wifi: mac80211: check basic rates validity

When userspace sets basic rates, it might send us some rates
list that's empty or consists of invalid values only. We're
currently ignoring invalid values and then may end up with a
rates bitmap that's empty, which later results in a warning.

Reject the call if there were no valid rates.
Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
上级 b27f07c5
...@@ -2611,6 +2611,17 @@ static int ieee80211_change_bss(struct wiphy *wiphy, ...@@ -2611,6 +2611,17 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
if (!sband) if (!sband)
return -EINVAL; return -EINVAL;
if (params->basic_rates) {
if (!ieee80211_parse_bitrates(link->conf->chandef.width,
wiphy->bands[sband->band],
params->basic_rates,
params->basic_rates_len,
&link->conf->basic_rates))
return -EINVAL;
changed |= BSS_CHANGED_BASIC_RATES;
ieee80211_check_rate_mask(link);
}
if (params->use_cts_prot >= 0) { if (params->use_cts_prot >= 0) {
link->conf->use_cts_prot = params->use_cts_prot; link->conf->use_cts_prot = params->use_cts_prot;
changed |= BSS_CHANGED_ERP_CTS_PROT; changed |= BSS_CHANGED_ERP_CTS_PROT;
...@@ -2632,16 +2643,6 @@ static int ieee80211_change_bss(struct wiphy *wiphy, ...@@ -2632,16 +2643,6 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
changed |= BSS_CHANGED_ERP_SLOT; changed |= BSS_CHANGED_ERP_SLOT;
} }
if (params->basic_rates) {
ieee80211_parse_bitrates(link->conf->chandef.width,
wiphy->bands[sband->band],
params->basic_rates,
params->basic_rates_len,
&link->conf->basic_rates);
changed |= BSS_CHANGED_BASIC_RATES;
ieee80211_check_rate_mask(link);
}
if (params->ap_isolate >= 0) { if (params->ap_isolate >= 0) {
if (params->ap_isolate) if (params->ap_isolate)
sdata->flags |= IEEE80211_SDATA_DONT_BRIDGE_PACKETS; sdata->flags |= IEEE80211_SDATA_DONT_BRIDGE_PACKETS;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册