Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into upstream-fixes

+29 -9
+1
drivers/net/wireless/Kconfig
··· 447 447 tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards" 448 448 depends on NET_RADIO && PCMCIA && (BROKEN || !M32R) 449 449 select CRYPTO 450 + select CRYPTO_AES 450 451 ---help--- 451 452 This is the standard Linux driver to support Cisco/Aironet PCMCIA 452 453 802.11 wireless cards. This driver is the same as the Aironet
+1 -1
drivers/net/wireless/bcm43xx/bcm43xx_main.c
··· 3701 3701 } 3702 3702 if (sec->flags & SEC_AUTH_MODE) { 3703 3703 secinfo->auth_mode = sec->auth_mode; 3704 - dprintk(", .auth_mode = %d\n", sec->auth_mode); 3704 + dprintk(", .auth_mode = %d", sec->auth_mode); 3705 3705 } 3706 3706 dprintk("\n"); 3707 3707 if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED &&
+2 -2
drivers/net/wireless/orinoco.c
··· 2875 2875 if (orinoco_lock(priv, &flags) != 0) 2876 2876 return -EBUSY; 2877 2877 2878 - if (erq->pointer) { 2878 + if (erq->length > 0) { 2879 2879 if ((index < 0) || (index >= ORINOCO_MAX_KEYS)) 2880 2880 index = priv->tx_key; 2881 2881 ··· 2918 2918 if (erq->flags & IW_ENCODE_RESTRICTED) 2919 2919 restricted = 1; 2920 2920 2921 - if (erq->pointer) { 2921 + if (erq->pointer && erq->length > 0) { 2922 2922 priv->keys[index].len = cpu_to_le16(xlen); 2923 2923 memset(priv->keys[index].data, 0, 2924 2924 sizeof(priv->keys[index].data));
+2
drivers/net/wireless/zd1201.c
··· 1820 1820 zd->dev->name); 1821 1821 1822 1822 usb_set_intfdata(interface, zd); 1823 + zd1201_enable(zd); /* zd1201 likes to startup enabled, */ 1824 + zd1201_disable(zd); /* interfering with all the wifis in range */ 1823 1825 return 0; 1824 1826 1825 1827 err_net:
+1
net/ieee80211/Kconfig
··· 58 58 depends on IEEE80211 && NET_RADIO 59 59 select CRYPTO 60 60 select CRYPTO_MICHAEL_MIC 61 + select CRC32 61 62 ---help--- 62 63 Include software based cipher suites in support of IEEE 802.11i 63 64 (aka TGi, WPA, WPA2, WPA-PSK, etc.) for use with TKIP enabled
+22 -6
net/ieee80211/softmac/ieee80211softmac_auth.c
··· 116 116 kfree(auth); 117 117 } 118 118 119 + /* Sends a response to an auth challenge (for shared key auth). */ 120 + static void 121 + ieee80211softmac_auth_challenge_response(void *_aq) 122 + { 123 + struct ieee80211softmac_auth_queue_item *aq = _aq; 124 + 125 + /* Send our response */ 126 + ieee80211softmac_send_mgt_frame(aq->mac, aq->net, IEEE80211_STYPE_AUTH, aq->state); 127 + } 128 + 119 129 /* Handle the auth response from the AP 120 130 * This should be registered with ieee80211 as handle_auth 121 131 */ ··· 207 197 case IEEE80211SOFTMAC_AUTH_SHARED_CHALLENGE: 208 198 /* Check to make sure we have a challenge IE */ 209 199 data = (u8 *)auth->info_element; 210 - if(*data++ != MFIE_TYPE_CHALLENGE){ 200 + if (*data++ != MFIE_TYPE_CHALLENGE) { 211 201 printkl(KERN_NOTICE PFX "Shared Key Authentication failed due to a missing challenge.\n"); 212 202 break; 213 203 } 214 204 /* Save the challenge */ 215 205 spin_lock_irqsave(&mac->lock, flags); 216 206 net->challenge_len = *data++; 217 - if(net->challenge_len > WLAN_AUTH_CHALLENGE_LEN) 207 + if (net->challenge_len > WLAN_AUTH_CHALLENGE_LEN) 218 208 net->challenge_len = WLAN_AUTH_CHALLENGE_LEN; 219 - if(net->challenge != NULL) 209 + if (net->challenge != NULL) 220 210 kfree(net->challenge); 221 211 net->challenge = kmalloc(net->challenge_len, GFP_ATOMIC); 222 212 memcpy(net->challenge, data, net->challenge_len); 223 213 aq->state = IEEE80211SOFTMAC_AUTH_SHARED_RESPONSE; 224 - spin_unlock_irqrestore(&mac->lock, flags); 225 214 226 - /* Send our response */ 227 - ieee80211softmac_send_mgt_frame(mac, aq->net, IEEE80211_STYPE_AUTH, aq->state); 215 + /* We reuse the work struct from the auth request here. 216 + * It is safe to do so as each one is per-request, and 217 + * at this point (dealing with authentication response) 218 + * we have obviously already sent the initial auth 219 + * request. */ 220 + cancel_delayed_work(&aq->work); 221 + INIT_WORK(&aq->work, &ieee80211softmac_auth_challenge_response, (void *)aq); 222 + schedule_work(&aq->work); 223 + spin_unlock_irqrestore(&mac->lock, flags); 228 224 return 0; 229 225 case IEEE80211SOFTMAC_AUTH_SHARED_PASS: 230 226 kfree(net->challenge);