wifi: cfg80211: Increase akm_suites array size in cfg80211_crypto_settings
[linux-block.git] / net / wireless / nl80211.c
index b583a76ef4923dbb8efa126eb6e66c34edd2636f..e2b6740268a6424316f3bdf1d5e22cf75192b74f 100644 (file)
@@ -798,6 +798,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
                NLA_POLICY_RANGE(NLA_U8, 0, IEEE80211_MLD_MAX_NUM_LINKS),
        [NL80211_ATTR_MLD_ADDR] = NLA_POLICY_EXACT_LEN(ETH_ALEN),
        [NL80211_ATTR_MLO_SUPPORT] = { .type = NLA_FLAG },
+       [NL80211_ATTR_MAX_NUM_AKM_SUITES] = { .type = NLA_REJECT },
 };
 
 /* policy for the key attributes */
@@ -2932,6 +2933,10 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
                if (nl80211_put_mbssid_support(&rdev->wiphy, msg))
                        goto nla_put_failure;
 
+               if (nla_put_u16(msg, NL80211_ATTR_MAX_NUM_AKM_SUITES,
+                               rdev->wiphy.max_num_akm_suites))
+                       goto nla_put_failure;
+
                /* done */
                state->split_start = 0;
                break;
@@ -10431,7 +10436,7 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev,
                if (len % sizeof(u32))
                        return -EINVAL;
 
-               if (settings->n_akm_suites > NL80211_MAX_NR_AKM_SUITES)
+               if (settings->n_akm_suites > rdev->wiphy.max_num_akm_suites)
                        return -EINVAL;
 
                memcpy(settings->akm_suites, data, len);