aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/ieee80211/ieee80211_tx.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c
index 2955b7aa5a38..f4f2a33973a7 100644
--- a/net/ieee80211/ieee80211_tx.c
+++ b/net/ieee80211/ieee80211_tx.c
@@ -157,11 +157,14 @@ static inline int ieee80211_encrypt_fragment(struct ieee80211_device *ieee,
157 struct ieee80211_crypt_data *crypt = ieee->crypt[ieee->tx_keyidx]; 157 struct ieee80211_crypt_data *crypt = ieee->crypt[ieee->tx_keyidx];
158 int res; 158 int res;
159 159
160 if (crypt == NULL)
161 return -1;
162
160 /* To encrypt, frame format is: 163 /* To encrypt, frame format is:
161 * IV (4 bytes), clear payload (including SNAP), ICV (4 bytes) */ 164 * IV (4 bytes), clear payload (including SNAP), ICV (4 bytes) */
162 atomic_inc(&crypt->refcnt); 165 atomic_inc(&crypt->refcnt);
163 res = 0; 166 res = 0;
164 if (crypt->ops->encrypt_mpdu) 167 if (crypt->ops && crypt->ops->encrypt_mpdu)
165 res = crypt->ops->encrypt_mpdu(frag, hdr_len, crypt->priv); 168 res = crypt->ops->encrypt_mpdu(frag, hdr_len, crypt->priv);
166 169
167 atomic_dec(&crypt->refcnt); 170 atomic_dec(&crypt->refcnt);
@@ -264,9 +267,9 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
264 encrypt = !(ether_type == ETH_P_PAE && ieee->ieee802_1x) && 267 encrypt = !(ether_type == ETH_P_PAE && ieee->ieee802_1x) &&
265 ieee->sec.encrypt; 268 ieee->sec.encrypt;
266 269
267 host_encrypt = ieee->host_encrypt && encrypt; 270 host_encrypt = ieee->host_encrypt && encrypt && crypt;
268 host_encrypt_msdu = ieee->host_encrypt_msdu && encrypt; 271 host_encrypt_msdu = ieee->host_encrypt_msdu && encrypt && crypt;
269 host_build_iv = ieee->host_build_iv && encrypt; 272 host_build_iv = ieee->host_build_iv && encrypt && crypt;
270 273
271 if (!encrypt && ieee->ieee802_1x && 274 if (!encrypt && ieee->ieee802_1x &&
272 ieee->drop_unencrypted && ether_type != ETH_P_PAE) { 275 ieee->drop_unencrypted && ether_type != ETH_P_PAE) {