diff options
author | Yoni Divinsky <yoni.divinsky@ti.com> | 2012-01-16 15:18:59 +0200 |
---|---|---|
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) | |
download | lwn-d32a102819eef99d4d87019266bea208447be0a0.tar.gz lwn-d32a102819eef99d4d87019266bea208447be0a0.zip |
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) return RX_CONTINUE; } + +ieee80211_tx_result +ieee80211_crypto_hw_encrypt(struct ieee80211_tx_data *tx) +{ + struct sk_buff *skb; + struct ieee80211_tx_info *info = NULL; + + skb_queue_walk(&tx->skbs, skb) { + info = IEEE80211_SKB_CB(skb); + + /* handle hw-only algorithm */ + if (!info->control.hw_key) + return TX_DROP; + } + + ieee80211_tx_set_protected(tx); + + return TX_CONTINUE; +} |