]> git.baikalelectronics.ru Git - kernel.git/commit
iwlwifi: fix double free/complete in firmware loading
authorJohannes Berg <johannes.berg@intel.com>
Tue, 5 Jun 2012 17:56:06 +0000 (19:56 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 5 Jun 2012 18:27:29 +0000 (14:27 -0400)
commit3d402ae5bf650a2caa54785078557b87a436b422
treefdf77d4e1d59490a1f5c1584cb853a3fe32c8255
parent2e38075f4ae7dd792e4a5e4bd546b159ff8718b6
iwlwifi: fix double free/complete in firmware loading

Linus reported that due to mac80211 failing to register
the device (due to WoWLAN) his machine crashed etc. as
we double-freed the vmalloc() firmware area. His patch
to fix it was very similar to this one but I noticed
that there's another bug in the area: we complete the
completion before starting, so since we're running in
a work struct context stop() could be called while in
the middle of start() which will almost certainly lead
to issues.

Make a modification similar to his to avoid the double-
free but also move the completion to another spot so it
is only done after start() either finished or failed so
that stop() can have a consistent state.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-drv.c