diff options
author | David S. Miller <davem@davemloft.net> | 2016-09-18 22:29:08 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-09-18 22:29:08 -0400 |
commit | c13ed534b8db543e4d8ead3885f4b06585a5771c (patch) | |
tree | b371024a63efe057e0bed95fc5ed77900b113e7d /net/wireless/util.c | |
parent | 22da73492541736eff5f6a6634c732e36c52a133 (diff) | |
parent | fbd05e4a6e82fd573d3aa79e284e424b8d78c149 (diff) |
Merge tag 'mac80211-next-for-davem-2016-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says:
====================
This time we have various things - all across the board:
* MU-MIMO sniffer support in mac80211
* a create_singlethread_workqueue() cleanup
* interface dump filtering that was documented but not implemented
* support for the new radiotap timestamp field
* send delBA in two unexpected conditions (as required by the spec)
* connect keys cleanups - allow only WEP with index 0-3
* per-station aggregation limit to work around broken APs
* debugfs improvement for the integrated codel algorithm
and various other small improvements and cleanups.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/wireless/util.c')
-rw-r--r-- | net/wireless/util.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/net/wireless/util.c b/net/wireless/util.c index 0675f513e7b9..9e6e2aaa7766 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c | |||
@@ -218,7 +218,7 @@ int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, | |||
218 | struct key_params *params, int key_idx, | 218 | struct key_params *params, int key_idx, |
219 | bool pairwise, const u8 *mac_addr) | 219 | bool pairwise, const u8 *mac_addr) |
220 | { | 220 | { |
221 | if (key_idx > 5) | 221 | if (key_idx < 0 || key_idx > 5) |
222 | return -EINVAL; | 222 | return -EINVAL; |
223 | 223 | ||
224 | if (!pairwise && mac_addr && !(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN)) | 224 | if (!pairwise && mac_addr && !(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN)) |
@@ -249,7 +249,13 @@ int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, | |||
249 | /* Disallow BIP (group-only) cipher as pairwise cipher */ | 249 | /* Disallow BIP (group-only) cipher as pairwise cipher */ |
250 | if (pairwise) | 250 | if (pairwise) |
251 | return -EINVAL; | 251 | return -EINVAL; |
252 | if (key_idx < 4) | ||
253 | return -EINVAL; | ||
252 | break; | 254 | break; |
255 | case WLAN_CIPHER_SUITE_WEP40: | ||
256 | case WLAN_CIPHER_SUITE_WEP104: | ||
257 | if (key_idx > 3) | ||
258 | return -EINVAL; | ||
253 | default: | 259 | default: |
254 | break; | 260 | break; |
255 | } | 261 | } |
@@ -906,7 +912,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) | |||
906 | if (!wdev->connect_keys) | 912 | if (!wdev->connect_keys) |
907 | return; | 913 | return; |
908 | 914 | ||
909 | for (i = 0; i < 6; i++) { | 915 | for (i = 0; i < 4; i++) { |
910 | if (!wdev->connect_keys->params[i].cipher) | 916 | if (!wdev->connect_keys->params[i].cipher) |
911 | continue; | 917 | continue; |
912 | if (rdev_add_key(rdev, dev, i, false, NULL, | 918 | if (rdev_add_key(rdev, dev, i, false, NULL, |
@@ -919,9 +925,6 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) | |||
919 | netdev_err(dev, "failed to set defkey %d\n", i); | 925 | netdev_err(dev, "failed to set defkey %d\n", i); |
920 | continue; | 926 | continue; |
921 | } | 927 | } |
922 | if (wdev->connect_keys->defmgmt == i) | ||
923 | if (rdev_set_default_mgmt_key(rdev, dev, i)) | ||
924 | netdev_err(dev, "failed to set mgtdef %d\n", i); | ||
925 | } | 928 | } |
926 | 929 | ||
927 | kzfree(wdev->connect_keys); | 930 | kzfree(wdev->connect_keys); |