projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mac80211: avoid deadlock revealed by lockdep
[linux-2.6-block.git]
/
net
/
mac80211
/
iface.c
diff --git
a/net/mac80211/iface.c
b/net/mac80211/iface.c
index 3dfd20a453aba250fff726d1733f0dac6c763b3c..ae2eb148a02846a97e9156571a87f27e5d232b5e 100644
(file)
--- a/
net/mac80211/iface.c
+++ b/
net/mac80211/iface.c
@@
-770,12
+770,19
@@
static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
ieee80211_roc_purge(local, sdata);
ieee80211_roc_purge(local, sdata);
- if (sdata->vif.type == NL80211_IFTYPE_STATION)
+ switch (sdata->vif.type) {
+ case NL80211_IFTYPE_STATION:
ieee80211_mgd_stop(sdata);
ieee80211_mgd_stop(sdata);
-
- if (sdata->vif.type == NL80211_IFTYPE_ADHOC)
+ break;
+ case NL80211_IFTYPE_ADHOC:
ieee80211_ibss_stop(sdata);
ieee80211_ibss_stop(sdata);
-
+ break;
+ case NL80211_IFTYPE_AP:
+ cancel_work_sync(&sdata->u.ap.request_smps_work);
+ break;
+ default:
+ break;
+ }
/*
* Remove all stations associated with this interface.
/*
* Remove all stations associated with this interface.