diff options
author | Yoni Divinsky <yoni.divinsky@ti.com> | 2012-01-16 08:18:59 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-01-16 15:01:16 -0500 |
commit | d32a102819eef99d4d87019266bea208447be0a0 (patch) | |
tree | ff6484ac0f843dc48c24db2604bfbef1424967e0 /net/mac80211/wpa.c | |
parent | 331d9301ed4d0fe33e9762c62f2870243bcf77eb (diff) |
mac80211: fix tx->skb NULL pointer dereference
In function ieee80211_tx_h_encrypt the var info was
initialized from tx->skb, since the fucntion
is called after the function ieee80211_tx_h_fragment
tx->skb is not valid anymore.
Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/wpa.c')
-rw-r--r-- | net/mac80211/wpa.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index 422b79851ec5..b758350919ff 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c | |||
@@ -643,3 +643,22 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx) | |||
643 | 643 | ||
644 | return RX_CONTINUE; | 644 | return RX_CONTINUE; |
645 | } | 645 | } |
646 | |||
647 | ieee80211_tx_result | ||
648 | ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx) | ||
649 | { | ||
650 | struct sk_buff *skb; | ||
651 | struct ieee80211_tx_info *info = NULL; | ||
652 | |||
653 | skb_queue_walk(&tx->skbs, skb) { | ||
654 | info = IEEE80211_SKB_CB(skb); | ||
655 | |||
656 | /* handle hw-only algorithm */ | ||
657 | if (!info->control.hw_key) | ||
658 | return TX_DROP; | ||
659 | } | ||
660 | |||
661 | ieee80211_tx_set_protected(tx); | ||
662 | |||
663 | return TX_CONTINUE; | ||
664 | } | ||