mac80211: don't kmalloc 16 bytes
authorJohannes Berg <johannes.berg@intel.com>
Sun, 10 Oct 2010 16:52:10 +0000 (18:52 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 11 Oct 2010 19:04:23 +0000 (15:04 -0400)
Since this small buffer isn't used for DMA,
we can simply allocate it on the stack, it
just needs to be 16 bytes of which only 8
will be used for WEP40 keys.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/wep.c

index f27484c22b9f40bf3876825b451e63670523ea39..2ff6d1e3ed21565524fc55c724b24bbee67dd0c6 100644 (file)
@@ -222,7 +222,7 @@ static int ieee80211_wep_decrypt(struct ieee80211_local *local,
                                 struct ieee80211_key *key)
 {
        u32 klen;
-       u8 *rc4key;
+       u8 rc4key[3 + WLAN_KEY_LEN_WEP104];
        u8 keyidx;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
        unsigned int hdrlen;
@@ -245,10 +245,6 @@ static int ieee80211_wep_decrypt(struct ieee80211_local *local,
 
        klen = 3 + key->conf.keylen;
 
-       rc4key = kmalloc(klen, GFP_ATOMIC);
-       if (!rc4key)
-               return -1;
-
        /* Prepend 24-bit IV to RC4 key */
        memcpy(rc4key, skb->data + hdrlen, 3);
 
@@ -260,8 +256,6 @@ static int ieee80211_wep_decrypt(struct ieee80211_local *local,
                                       len))
                ret = -1;
 
-       kfree(rc4key);
-
        /* Trim ICV */
        skb_trim(skb, skb->len - WEP_ICV_LEN);