3c10e804f96b7f9ad31daf23132b43193a3a08b1
[openwrt.git] / package / madwifi / patches / 124-node_unref_r2484.patch
1 Index: madwifi/net80211/ieee80211_wireless.c\r
2 ===================================================================\r
3 --- madwifi/net80211/ieee80211_wireless.c (revision 2482)\r
4 +++ madwifi/net80211/ieee80211_wireless.c (revision 2484)\r
5 @@ -1102,5 +1102,4 @@\r
6         for (i = 0; i < number; i++) {\r
7                 ni = ieee80211_find_node(nt, &vap->iv_spy.mac[i * IEEE80211_ADDR_LEN]);\r
8 -               /* TODO: free node ? */\r
9                 /* check we are associated w/ this vap */\r
10                 if (ni && (ni->ni_vap == vap)) {\r
11 @@ -1114,4 +1113,5 @@\r
12                         spy_stat[i].updated = IW_QUAL_ALL_INVALID;\r
13                 }\r
14 +               ieee80211_unref_node(&ni);\r
15         }\r
16  \r
17 @@ -3191,4 +3191,5 @@\r
18         if (ik->ik_keylen > sizeof(ik->ik_keydata))\r
19                 return -E2BIG;\r
20 +\r
21         kix = ik->ik_keyix;\r
22         if (kix == IEEE80211_KEYIX_NONE) {\r
23 @@ -3214,4 +3215,5 @@\r
24                         ik->ik_flags |= IEEE80211_KEY_GROUP;    /* XXX */\r
25         }\r
26 +\r
27         error = 0;\r
28         flags = ik->ik_flags & IEEE80211_KEY_COMMON;\r
29 @@ -3228,5 +3230,5 @@\r
30                 memcpy(wk->wk_key, ik->ik_keydata, ik->ik_keylen);\r
31                 if (!ieee80211_crypto_setkey(vap, wk,\r
32 -                   ni != NULL ? ni->ni_macaddr : ik->ik_macaddr, ni))\r
33 +                   (ni != NULL) ? ni->ni_macaddr : ik->ik_macaddr, ni))\r
34                         error = -EIO;\r
35                 else if ((ik->ik_flags & IEEE80211_KEY_DEFAULT))\r
36 @@ -3234,4 +3236,5 @@\r
37         } else\r
38                 error = -ENXIO;\r
39 +\r
40         ieee80211_key_update_end(vap);\r
41         if (ni != NULL)\r
42 Index: madwifi/net80211/ieee80211_output.c\r
43 ===================================================================\r
44 --- madwifi/net80211/ieee80211_output.c (revision 2438)\r
45 +++ madwifi/net80211/ieee80211_output.c (revision 2484)\r
46 @@ -269,4 +269,5 @@\r
47                  */\r
48                 ieee80211_pwrsave(ni, skb);\r
49 +               ieee80211_unref_node(&ni);\r
50                 return 0;\r
51         }\r
52 @@ -283,5 +284,5 @@\r
53                 struct sk_buff *skb1;\r
54                 ni = ieee80211_find_txnode(vap->iv_xrvap, eh->ether_dhost);\r
55 -               skb1 = skb_clone(skb,GFP_ATOMIC);\r
56 +               skb1 = skb_clone(skb, GFP_ATOMIC);\r
57                 if (skb1) {\r
58                         cb = (struct ieee80211_cb *) skb1->cb;\r
59 Index: madwifi/ath/if_ath.c\r
60 ===================================================================\r
61 --- madwifi/ath/if_ath.c (revision 2482)\r
62 +++ madwifi/ath/if_ath.c (revision 2484)\r
63 @@ -8111,14 +8111,13 @@\r
64                                 /* Depending on the sequence of bringing up devices\r
65                                  * it's possible the rates of the root bss isn't\r
66 -                                * filled yet. \r
67 -                                */\r
68 -                               if (vap->iv_ic->ic_newassoc != NULL &&\r
69 -                                   wds_ni->ni_rates.rs_nrates != 0) {\r
70 +                                * filled yet. */\r
71 +                               if ((vap->iv_ic->ic_newassoc != NULL) &&\r
72 +                                   (wds_ni->ni_rates.rs_nrates != 0)) {\r
73                                         /* Fill in the rates based on our own rates\r
74                                          * we rely on the rate selection mechanism\r
75 -                                        * to find out which rates actually work!\r
76 -                                        */\r
77 +                                        * to find out which rates actually work! */\r
78                                         vap->iv_ic->ic_newassoc(wds_ni, 1);\r
79                                 }\r
80 +                               ieee80211_unref_node(&wds_ni);\r
81                         }\r
82                         break;\r