diff options
Diffstat (limited to 'net/wireless/scan.c')
| -rw-r--r-- | net/wireless/scan.c | 5 | 
1 files changed, 5 insertions, 0 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index 58401d246bd..5ca8c718014 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c @@ -275,6 +275,7 @@ struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,  {  	struct cfg80211_registered_device *dev = wiphy_to_dev(wiphy);  	struct cfg80211_internal_bss *bss, *res = NULL; +	unsigned long now = jiffies;  	spin_lock_bh(&dev->bss_lock); @@ -283,6 +284,10 @@ struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,  			continue;  		if (channel && bss->pub.channel != channel)  			continue; +		/* Don't get expired BSS structs */ +		if (time_after(now, bss->ts + IEEE80211_SCAN_RESULT_EXPIRE) && +		    !atomic_read(&bss->hold)) +			continue;  		if (is_bss(&bss->pub, bssid, ssid, ssid_len)) {  			res = bss;  			kref_get(&res->ref);  |