From 3b4dd6cb3a5ee61d16d225b5d1bea0adb413e47e Mon Sep 17 00:00:00 2001 From: mtaylor Date: Sat, 3 Nov 2007 05:30:40 +0000 Subject: [PATCH] Fix a node reference leak in ieee80211_ioctl_getspy loop git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@2823 0192ed92-7a03-0410-a25b-9323aeb14dbd --- net80211/ieee80211_wireless.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/net80211/ieee80211_wireless.c b/net80211/ieee80211_wireless.c index 8a39502..e201c93 100644 --- a/net80211/ieee80211_wireless.c +++ b/net80211/ieee80211_wireless.c @@ -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;