Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63ba6ae8 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "nl80211: fix beacon tx rate mask validation"

parents 4acaec04 bf0f2881
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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;