Search Linux Wireless

[PATCH] cfg80211: Fix spamming of logs when number of scan results is limited

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When the cfg80211 option "bss_entries_limit" is set to 1, routine
cfg80211_bss_expire_oldest() fails by issuing repeated warnings.
The problem could also occur in the unlikely event that a scan only finds
a single SSID. In the first case, the warning is avoided by testing for
the special ivalue for the option before scanning for the oldest entry.
The second case is handled by converting the WARN_ON() to a WARN_ON_ONCE().
These changes fix commit 9853a55ef1bb ("cfg80211: limit scan results cache
size").

Reported-by: Maxim Klimenko Sergievich <klimenkomaximsergievich@xxxxxxxxx>
Fixes: 9853a55ef1bb ("cfg80211: limit scan results cache size").
Cc: stable@xxxxxxxxxxxxxxx # 4.9+
Cc: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
---
 net/wireless/scan.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 22e92be61938..d7aa38445fe6 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -463,6 +463,12 @@ static bool cfg80211_bss_expire_oldest(struct cfg80211_registered_device *rdev)
 
 	lockdep_assert_held(&rdev->bss_lock);
 
+	/* If the user has set cfg80211 option bss_entries_limit to 1,
+	 * there cannot be an oldest BSS. Skip the scan.
+	 */
+	if (unlikely(rdev->bss_entries == 1))
+		return false;
+
 	list_for_each_entry(bss, &rdev->bss_list, list) {
 		if (atomic_read(&bss->hold))
 			continue;
@@ -476,7 +482,7 @@ static bool cfg80211_bss_expire_oldest(struct cfg80211_registered_device *rdev)
 		oldest = bss;
 	}
 
-	if (WARN_ON(!oldest))
+	if (WARN_ON_ONCE(!oldest))
 		return false;
 
 	/*
-- 
2.35.1




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux