linux/net/wireless
Johannes Berg 990de49f74 wireless: regulatory: fix channel disabling race condition
When a full scan 2.4 and 5 GHz scan is scheduled, but then the 2.4 GHz
part of the scan disables a 5.2 GHz channel due to, e.g. receiving
country or frequency information, that 5.2 GHz channel might already
be in the list of channels to scan next. Then, when the driver checks
if it should do a passive scan, that will return false and attempt an
active scan. This is not only wrong but can also lead to the iwlwifi
device firmware crashing since it checks regulatory as well.

Fix this by not setting the channel flags to just disabled but rather
OR'ing in the disabled flag. That way, even if the race happens, the
channel will be scanned passively which is still (mostly) correct.

Cc: stable@vger.kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2013-04-16 15:25:46 +02:00
..
.gitignore wireless: support internal statically compiled regulatory database 2009-12-21 18:56:10 -05:00
ap.c cfg80211: move exported event functions into nl80211 2013-03-06 16:35:46 +01:00
chan.c cfg80211: allow drivers to selectively disable 80/160 MHz 2013-02-15 09:41:38 +01:00
core.c cfg80211: fix error return code in cfg80211_init() 2013-03-20 14:09:56 +01:00
core.h cfg80211/mac80211: disconnect on suspend 2013-03-06 16:35:55 +01:00
db.txt wireless: support internal statically compiled regulatory database 2009-12-21 18:56:10 -05:00
debugfs.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
debugfs.h cfg80211/mac80211: use debugfs_remove_recursive 2009-10-30 16:49:18 -04:00
ethtool.c ethtool: fix drvinfo strings set in drivers 2013-01-06 21:06:31 -08:00
ethtool.h net/wireless/ethtool.h: drop unnecessary include of linux/ethtool.h 2009-10-07 16:39:49 -04:00
genregdb.awk cfg80211: relicense reg.c reg.h and genregdb.awk to ISC 2012-01-04 14:30:41 -05:00
ibss.c cfg80211: pass wiphy to cfg80211_ref_bss/put_bss 2013-02-11 18:44:52 +01:00
Kconfig lib80211: hide Kconfig symbol 2012-11-16 14:29:09 -05:00
lib80211_crypt_ccmp.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
lib80211_crypt_tkip.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
lib80211_crypt_wep.c wireless: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
lib80211.c lib80211: remove exports for functions not called by other modules 2011-08-09 15:42:36 -04:00
Makefile cfg80211: add tracing to rdev-ops 2012-10-18 10:53:37 +02:00
mesh.c nl80211: explicit userspace MPM 2013-03-06 16:36:11 +01:00
mlme.c cfg80211: refactor association parameters 2013-03-06 16:35:49 +01:00
nl80211.c nl80211: user_mpm overrides auto_open_plinks 2013-03-06 16:36:13 +01:00
nl80211.h cfg80211: move exported event functions into nl80211 2013-03-06 16:35:46 +01:00
radiotap.c wireless: add radiotap A-MPDU status field 2012-08-20 13:53:09 +02:00
rdev-ops.h cfg80211/mac80211: disconnect on suspend 2013-03-06 16:35:55 +01:00
reg.c wireless: regulatory: fix channel disabling race condition 2013-04-16 15:25:46 +02:00
reg.h regulatory: use RCU to protect global and wiphy regdomains 2013-01-03 13:01:29 +01:00
regdb.h cfg80211: relicense reg.c reg.h and genregdb.awk to ISC 2012-01-04 14:30:41 -05:00
scan.c Merge remote-tracking branch 'mac80211/master' into HEAD 2013-02-15 09:41:21 +01:00
sme.c cfg80211: fix potential connection work crash 2013-03-20 14:07:26 +01:00
sysfs.c cfg80211/mac80211: disconnect on suspend 2013-03-06 16:35:55 +01:00
sysfs.h
trace.c cfg80211: add tracing to rdev-ops 2012-10-18 10:53:37 +02:00
trace.h cfg80211: Extend support for IEEE 802.11r Fast BSS Transition 2013-03-06 16:35:51 +01:00
util.c cfg80211: fix radar check for P2P_DEVICE 2013-02-11 18:44:45 +01:00
wext-compat.c wext: explicitly cast -110 to u8 2012-12-07 11:58:26 +01:00
wext-compat.h cfg80211: remove unused wext handler exports 2011-08-08 14:26:29 -04:00
wext-core.c wext: include wireless event id when it has a size problem 2012-09-05 16:12:44 +02:00
wext-priv.c wext: fix potential private ioctl memory content leak 2010-09-20 13:41:40 -04:00
wext-proc.c net: proc: change proc_net_remove to remove_proc_entry 2013-02-18 14:53:08 -05:00
wext-sme.c cfg80211: fix BSS struct IE access races 2012-11-30 13:42:20 +01:00
wext-spy.c wireless: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:19 -04:00