brcmfmac: return immediately error for out of range key_idx.
authorHante Meuleman <meuleman@broadcom.com>
Tue, 6 Nov 2012 00:22:28 +0000 (16:22 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 Nov 2012 19:56:01 +0000 (14:56 -0500)
when brcmf_cfg80211_del_key was called with out of range key index
then firmware would return error. Checking was added to
brcmf_cfg80211_del_key to immediately return error.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c

index 228fcaebefb8fc4b3f6115d3bea1e29efa732e29..4fbf5b32f67ab61cf14cfb012c29155e4438136b 100644 (file)
@@ -1822,6 +1822,12 @@ brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
        if (!check_vif_up(ifp->vif))
                return -EIO;
 
+       if (key_idx >= DOT11_MAX_DEFAULT_KEYS) {
+               /* we ignore this key index in this case */
+               WL_ERR("invalid key index (%d)\n", key_idx);
+               return -EINVAL;
+       }
+
        memset(&key, 0, sizeof(key));
 
        key.index = (u32) key_idx;
@@ -1832,15 +1838,6 @@ brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
 
        /* Set the new key/index */
        err = send_key_to_dongle(ndev, &key);
-       if (err) {
-               if (err == -EINVAL) {
-                       if (key.index >= DOT11_MAX_DEFAULT_KEYS)
-                               /* we ignore this key index in this case */
-                               WL_ERR("invalid key index (%d)\n", key_idx);
-               }
-               /* Ignore this error, may happen during DISASSOC */
-               err = -EAGAIN;
-       }
 
        WL_TRACE("Exit\n");
        return err;