mac80211: fix another suspend vs. association race
authorJohannes Berg <johannes.berg@intel.com>
Sun, 1 Mar 2015 07:10:03 +0000 (09:10 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 3 Mar 2015 14:56:08 +0000 (15:56 +0100)
commitbe72afe0a43825ea357bf61f01ff8fe9938fe7d4
treefc09a4fe3aab5d79b7529a239ccab3d1fe4d39f1
parentfb28ec0ce4acd54cb1972d224e2caf287b60d9c9
mac80211: fix another suspend vs. association race

Since cfg80211 disconnects, but has no insight into the association
process, it can happen that it disconnects while association is in
progress. We then try to abort association in mac80211, but this is
only later so the association can complete between the two.

This results in removing an interface from the driver while bound
to the channel context, obviously causing confusion and issues.

Solve this by also checking if we're associated during quiesce and
if so deauthenticating. The frame will no longer go out to the AP
which is a bit unfortunate, but it'll resolve the crash (and before
we would have suspended without telling the AP as well.)

I'm working on a better, but more complex solution as well, which
should avoid that problem.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c