summaryrefslogtreecommitdiff
path: root/net/wireless/scan.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-11-28 22:14:56 +0100
committerJohannes Berg <johannes.berg@intel.com>2012-11-30 13:41:24 +0100
commitb629ea3db4c0da4465ffa532914e4a3081f93cdf (patch)
treebbebaf3d20ded0b389a83458571734c2595a29b4 /net/wireless/scan.c
parent41e31b8b902397d5d507b275050fcbe8adaf4ff4 (diff)
downloadlinux-rpi3-b629ea3db4c0da4465ffa532914e4a3081f93cdf.tar.gz
linux-rpi3-b629ea3db4c0da4465ffa532914e4a3081f93cdf.tar.bz2
linux-rpi3-b629ea3db4c0da4465ffa532914e4a3081f93cdf.zip
cfg80211: don't BUG_ON BSS struct issues
There's no need to stop the machine, just leak the BSS entry if there's an issue with its hold counter when freeing. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/scan.c')
-rw-r--r--net/wireless/scan.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 9596015975d2..5af431f2f90a 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -26,6 +26,10 @@ static void bss_release(struct kref *ref)
struct cfg80211_internal_bss *bss;
bss = container_of(ref, struct cfg80211_internal_bss, ref);
+
+ if (WARN_ON(atomic_read(&bss->hold)))
+ return;
+
if (bss->pub.free_priv)
bss->pub.free_priv(&bss->pub);
@@ -34,8 +38,6 @@ static void bss_release(struct kref *ref)
if (bss->proberesp_ies_allocated)
kfree(bss->pub.proberesp_ies);
- BUG_ON(atomic_read(&bss->hold));
-
kfree(bss);
}