aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 3c53c5cbc3a9..79927706937a 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -122,6 +122,7 @@ static struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] __read_mostly = {
122 [NL80211_ATTR_REASON_CODE] = { .type = NLA_U16 }, 122 [NL80211_ATTR_REASON_CODE] = { .type = NLA_U16 },
123 [NL80211_ATTR_FREQ_FIXED] = { .type = NLA_FLAG }, 123 [NL80211_ATTR_FREQ_FIXED] = { .type = NLA_FLAG },
124 [NL80211_ATTR_TIMED_OUT] = { .type = NLA_FLAG }, 124 [NL80211_ATTR_TIMED_OUT] = { .type = NLA_FLAG },
125 [NL80211_ATTR_USE_MFP] = { .type = NLA_U32 },
125}; 126};
126 127
127/* IE validation */ 128/* IE validation */
@@ -3012,6 +3013,17 @@ static int nl80211_associate(struct sk_buff *skb, struct genl_info *info)
3012 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); 3013 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
3013 } 3014 }
3014 3015
3016 if (info->attrs[NL80211_ATTR_USE_MFP]) {
3017 enum nl80211_mfp use_mfp =
3018 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]);
3019 if (use_mfp == NL80211_MFP_REQUIRED)
3020 req.use_mfp = true;
3021 else if (use_mfp != NL80211_MFP_NO) {
3022 err = -EINVAL;
3023 goto out;
3024 }
3025 }
3026
3015 err = drv->ops->assoc(&drv->wiphy, dev, &req); 3027 err = drv->ops->assoc(&drv->wiphy, dev, &req);
3016 3028
3017out: 3029out: