Merge "nl80211: fix beacon tx rate mask validation"
This commit is contained in:
commit
63ba6ae867
@ -4408,7 +4408,8 @@ static const struct nla_policy nl80211_txattr_policy[NL80211_TXRATE_MAX + 1] = {
|
||||
};
|
||||
|
||||
static int nl80211_parse_tx_bitrate_mask(struct genl_info *info,
|
||||
struct cfg80211_bitrate_mask *mask)
|
||||
struct cfg80211_bitrate_mask *mask,
|
||||
bool default_all_enabled)
|
||||
{
|
||||
struct nlattr *tb[NL80211_TXRATE_MAX + 1];
|
||||
struct cfg80211_registered_device *rdev = info->user_ptr[0];
|
||||
@ -4420,6 +4421,9 @@ static int nl80211_parse_tx_bitrate_mask(struct genl_info *info,
|
||||
memset(mask, 0, sizeof(*mask));
|
||||
/* Default to all rates enabled */
|
||||
for (i = 0; i < NUM_NL80211_BANDS; i++) {
|
||||
if (!default_all_enabled)
|
||||
break;
|
||||
|
||||
sband = rdev->wiphy.bands[i];
|
||||
|
||||
if (!sband)
|
||||
@ -4943,7 +4947,7 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
|
||||
return -EINVAL;
|
||||
|
||||
if (info->attrs[NL80211_ATTR_TX_RATES]) {
|
||||
err = nl80211_parse_tx_bitrate_mask(info, ¶ms.beacon_rate);
|
||||
err = nl80211_parse_tx_bitrate_mask(info, ¶ms.beacon_rate, false);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@ -10725,7 +10729,7 @@ static int nl80211_set_tx_bitrate_mask(struct sk_buff *skb,
|
||||
if (!rdev->ops->set_bitrate_mask)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
err = nl80211_parse_tx_bitrate_mask(info, &mask);
|
||||
err = nl80211_parse_tx_bitrate_mask(info, &mask, true);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@ -11321,7 +11325,7 @@ static int nl80211_join_mesh(struct sk_buff *skb, struct genl_info *info)
|
||||
}
|
||||
|
||||
if (info->attrs[NL80211_ATTR_TX_RATES]) {
|
||||
err = nl80211_parse_tx_bitrate_mask(info, &setup.beacon_rate);
|
||||
err = nl80211_parse_tx_bitrate_mask(info, &setup.beacon_rate, false);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user