From 353db17dce3d621149aae45aa9f043876fec4dc1 Mon Sep 17 00:00:00 2001 From: Florian Schilhabel Date: Thu, 15 Jul 2010 19:04:10 +0200 Subject: [PATCH 395/524] staging: rtl8192su: merge changes in ieee80211_tkip_data() Signed-off-by: Florian Schilhabel Signed-off-by: Greg Kroah-Hartman --- .../rtl8192su/ieee80211/ieee80211_crypt_tkip.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c index b8d9f5e..c8f5ecf 100644 --- a/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c +++ b/drivers/staging/rtl8192su/ieee80211/ieee80211_crypt_tkip.c @@ -42,6 +42,7 @@ struct ieee80211_tkip_data { u32 rx_iv32; u16 rx_iv16; + bool initialized; u16 rx_ttak[5]; int rx_phase1_done; u32 rx_iv32_new; @@ -432,8 +433,8 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) if (!tcb_desc->bHwSec) { - if (iv32 < tkey->rx_iv32 || - (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16)) { + if ((iv32 < tkey->rx_iv32 || + (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16))&&tkey->initialized) { if (net_ratelimit()) { printk(KERN_DEBUG "TKIP: replay detected: STA=%pM" " previous TSC %08x%04x received TSC " @@ -443,6 +444,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) tkey->dot11RSNAStatsTKIPReplays++; return -4; } + tkey->initialized = true; if (iv32 != tkey->rx_iv32 || !tkey->rx_phase1_done) { tkip_mixing_phase1(tkey->rx_ttak, tkey->key, hdr->addr2, iv32); @@ -451,10 +453,8 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) tkip_mixing_phase2(rc4key, tkey->key, tkey->rx_ttak, iv16); plen = skb->len - hdr_len - 12; - + sg_init_one(&sg, pos, plen+4); crypto_blkcipher_setkey(tkey->rx_tfm_arc4, rc4key, 16); - sg_init_one(&sg, pos, plen + 4); - if (crypto_blkcipher_decrypt(&desc, &sg, &sg, plen + 4)) { if (net_ratelimit()) { printk(KERN_DEBUG ": TKIP: failed to decrypt " -- 1.7.1