aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/util.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-09-18 22:29:08 -0400
committerDavid S. Miller <davem@davemloft.net>2016-09-18 22:29:08 -0400
commitc13ed534b8db543e4d8ead3885f4b06585a5771c (patch)
treeb371024a63efe057e0bed95fc5ed77900b113e7d /net/wireless/util.c
parent22da73492541736eff5f6a6634c732e36c52a133 (diff)
parentfbd05e4a6e82fd573d3aa79e284e424b8d78c149 (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.c13
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);