linux/net
Johannes Berg 5bc75728fd mac80211: fix scan vs. interface removal race
When we remove an interface, we can currently end up having
a pointer to it left in local->scan_sdata after it has been
set down, and then with a hardware scan the scan completion
can try to access it which is a bug. Alternatively, a scan
that started as a hardware scan may terminate as though it
was a software scan, if the timing is just right.

On SMP systems, software scan also has a similar problem,
just canceling the delayed work and setting a flag isn't
enough since it may be running concurrently; in this case
we would also never restore state of other interfaces.

This patch hopefully fixes the problems by always invoking
ieee80211_scan_completed or requiring it to be invoked by
the driver, I suspect the drivers that have ->hw_scan() are
buggy. The bug will not manifest itself unless you remove
the interface while hw-scanning which will also turn off
the hw, and then add a new interface which will be unusable
until you scan once.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-09-15 16:48:20 -04:00
..
9p flag parameters: socket and socketpair 2008-07-24 10:47:27 -07:00
802
8021q vlan: vlan device not reading gso max size of parent. 2008-09-11 20:17:05 -07:00
appletalk
atm atm: fix const assignment/discard warnings in the ATM networking driver 2008-07-30 16:31:46 -07:00
ax25 AX.25: Fix sysctl registration if !CONFIG_AX25_DAMA_SLAVE 2008-08-05 18:46:57 -07:00
bluetooth [Bluetooth] Reject L2CAP connections on an insecure ACL link 2008-09-09 07:19:20 +02:00
bridge Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-09-08 16:59:05 -07:00
can netns: Use net_eq() to compare net-namespaces for optimization. 2008-07-19 22:34:43 -07:00
core net: fix scheduling of dst_gc_task by __dst_free 2008-09-12 16:16:37 -07:00
dccp This reverts "Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/dccp_exp" 2008-09-09 13:27:22 +02:00
decnet netns: Use net_eq() to compare net-namespaces for optimization. 2008-07-19 22:34:43 -07:00
econet netns: Use net_eq() to compare net-namespaces for optimization. 2008-07-19 22:34:43 -07:00
ethernet [NET]: Return more appropriate error from eth_validate_addr(). 2008-04-13 22:45:40 -07:00
ieee80211 net/ieee80211: adjust error handling 2008-08-22 16:29:49 -04:00
ipv4 net: ip_vs_proto_{tcp,udp} build fix 2008-09-12 23:23:50 -07:00
ipv6 tcp_ipv6: fix use of uninitialized memory 2008-09-12 16:17:43 -07:00
ipx
irda
iucv Merge branch 'linus' into cpus4096-for-linus 2008-07-21 17:19:50 +02:00
key net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
lapb
llc
mac80211 mac80211: fix scan vs. interface removal race 2008-09-15 16:48:20 -04:00
netfilter netfilter: nf_conntrack_irc: make sure string is terminated before calling simple_strtoul 2008-09-07 18:21:24 -07:00
netlabel netns: Use net_eq() to compare net-namespaces for optimization. 2008-07-19 22:34:43 -07:00
netlink
netrom
packet
rfkill rfkill: rename rfkill_mutex to rfkill_global_mutex 2008-08-29 16:24:11 -04:00
rose
rxrpc
sched multiq: Further multiqueue cleanup 2008-09-12 17:57:23 -07:00
sctp sctp: fix random memory dereference with SCTP_HMAC_IDENT option. 2008-08-27 16:09:49 -07:00
sunrpc sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports 2008-09-01 14:24:24 -04:00
tipc tipc: Don't use structure names which easily globally conflict. 2008-09-02 23:38:32 -07:00
unix
wanrouter
wireless cfg80211: Add new wireless regulatory infrastructure 2008-09-15 16:48:19 -04:00
x25
xfrm ipsec: Add missing list_del() in xfrm_state_gc_task(). 2008-09-09 22:13:28 -07:00
Kconfig WIRELESS: Make wireless one-click selectable. 2008-08-22 16:29:50 -04:00
Makefile
TUNABLE
compat.c
nonet.c
socket.c
sysctl_net.c