Fix a node reference leak in ieee80211_ioctl_getspy loop
authormtaylor <mtaylor@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Sat, 3 Nov 2007 05:30:40 +0000 (05:30 +0000)
committermtaylor <mtaylor@0192ed92-7a03-0410-a25b-9323aeb14dbd>
Sat, 3 Nov 2007 05:30:40 +0000 (05:30 +0000)
git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@2823 0192ed92-7a03-0410-a25b-9323aeb14dbd

net80211/ieee80211_wireless.c

index 8a395028072029d3d5a9bdcb2bc99910866c5530..e201c93294920584dec12d9a9929e6badd9907d8 100644 (file)
@@ -1103,14 +1103,15 @@ ieee80211_ioctl_getspy(struct net_device *dev, struct iw_request_info *info,
        for (i = 0; i < number; i++) {
                ni = ieee80211_find_node(nt, &vap->iv_spy.mac[i * IEEE80211_ADDR_LEN]);
                /* check we are associated w/ this vap */
-               if (ni && (ni->ni_vap == vap)) {
-                       set_quality(&spy_stat[i], ni->ni_rssi, ic->ic_channoise);
-                       if (ni->ni_rtsf != vap->iv_spy.ts_rssi[i]) {
-                               vap->iv_spy.ts_rssi[i] = ni->ni_rtsf;
-                       } else {
-                               spy_stat[i].updated = 0;
+               if (ni) {
+                       if(ni->ni_vap == vap) {
+                               set_quality(&spy_stat[i], ni->ni_rssi, ic->ic_channoise);
+                               if (ni->ni_rtsf != vap->iv_spy.ts_rssi[i]) {
+                                       vap->iv_spy.ts_rssi[i] = ni->ni_rtsf;
+                               } else {
+                                       spy_stat[i].updated = 0;
+                               }
                        }
-
                        ieee80211_unref_node(&ni);
                } else {
                        spy_stat[i].updated = IW_QUAL_ALL_INVALID;