Merge "nl80211: fix beacon tx rate mask validation"

This commit is contained in:
qctecmdr 2023-11-02 19:28:19 -07:00 committed by Gerrit - the friendly Code Review server
commit 63ba6ae867

View File

@ -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, &params.beacon_rate);
err = nl80211_parse_tx_bitrate_mask(info, &params.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;