kernel_optimize_test/net
Johannes Berg bc05d19f4b mac80211: fix IBSS lockdep complaint
Bob reported a lockdep complaint originating in
the mac80211 IBSS code due to the common work
struct patch. The reason is that the IBSS and
station mode code have different locking orders
for the cfg80211 wdev lock and the work struct
(where "locking" implies running/canceling).

Fix this by simply not canceling the work in
the IBSS code, it is not necessary since when
the REQ_RUN bit is cleared, the work will run
without effect if it runs. When the interface
is set down, it is flushed anyway, so there's
no concern about it running after memory has
been invalidated either.

This fixes
https://bugzilla.kernel.org/show_bug.cgi?id=16419

Additionally, looking into this I noticed that
there's a small window while the IBSS is torn
down in which the work may be rescheduled and
the REQ_RUN bit be set again after leave() has
cleared it when a scan finishes at exactly the
same time. Avoid that by setting the ssid_len
to zero before clearing REQ_RUN which signals
to the scan finish code that this interface is
not active.

Reported-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-07-21 15:13:42 -04:00
..
9p net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
802
8021q net: Remove unnecessary semicolons after switch statements 2010-05-17 17:44:35 -07:00
appletalk
atm net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
ax25
bluetooth net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
bridge bridge: fix build for CONFIG_SYSFS disabled 2010-05-18 12:26:27 -07:00
caif net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
can net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
core net: fix problem in dequeuing from input_pkt_queue 2010-05-21 00:38:33 -07:00
dcb
dccp
decnet net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
dsa
econet
ethernet
ieee802154
ipv4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-05-20 21:04:44 -07:00
ipv6 ipv6: Never schedule DAD timer on dead address 2010-05-18 15:56:06 -07:00
ipx
irda net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
iucv net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
key pfkey: add severity to printk 2010-05-17 23:23:13 -07:00
l2tp
lapb
llc Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-05-12 00:05:35 -07:00
mac80211 mac80211: fix IBSS lockdep complaint 2010-07-21 15:13:42 -04:00
netfilter Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6 2010-05-20 23:12:18 -07:00
netlabel net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
netlink
netrom
packet
phonet
rds net: Remove unnecessary semicolons after switch statements 2010-05-17 17:44:35 -07:00
rfkill
rose
rxrpc
sched net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
sctp net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
sunrpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-05-20 21:04:44 -07:00
tipc tipc: Reduce footprint by un-inlining tipc_msg_* routines 2010-05-12 23:02:29 -07:00
unix
wanrouter
wimax Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2010-05-20 21:04:44 -07:00
wireless cfg80211: fix race between sysfs and cfg80211 2010-07-21 15:13:42 -04:00
x25 X25: Remove bkl in sockopts 2010-05-17 17:39:28 -07:00
xfrm net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
compat.c
Kconfig
Makefile
nonet.c
socket.c net: Remove unnecessary semicolons after switch statements 2010-05-17 17:44:35 -07:00
sysctl_net.c net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
TUNABLE