aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/core.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-08-18 19:51:57 +0200
committerJohn W. Linville <linville@tuxdriver.com>2009-08-20 11:36:05 -0400
commitad002395fd230528281083f4be71855ed7e35b04 (patch)
treec2bccce17ad69dcfb454fe3a38ba68f0f210b5b5 /net/wireless/core.h
parent21f8a73f829797eb7ebc12202b4c68e10e751ddb (diff)
downloadkernel_samsung_smdk4412-ad002395fd230528281083f4be71855ed7e35b04.zip
kernel_samsung_smdk4412-ad002395fd230528281083f4be71855ed7e35b04.tar.gz
kernel_samsung_smdk4412-ad002395fd230528281083f4be71855ed7e35b04.tar.bz2
cfg80211: fix dangling scan request checking
My patch "cfg80211: fix deadlock" broke the code it was supposed to fix, the scan request checking. But it's not trivial to put it back the way it was, since the original patch had a deadlock. Now do it in a completely new way: queue the check off to a work struct, where we can freely lock. But that has some more complications, like needing to wait for it to be done before the wiphy/rdev can be destroyed, so some code is required to handle that. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/core.h')
-rw-r--r--net/wireless/core.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/wireless/core.h b/net/wireless/core.h
index c603f52..f565432 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -50,6 +50,8 @@ struct cfg80211_registered_device {
struct mutex devlist_mtx;
struct list_head netdev_list;
int devlist_generation;
+ int opencount; /* also protected by devlist_mtx */
+ wait_queue_head_t dev_wait;
/* BSSes/scanning */
spinlock_t bss_lock;