diff --git a/[refs] b/[refs] index b5655610c6a1..05c27b8e7054 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1351c5d3b189a487fbacd5cdf2dc3e6faf12c682 +refs/heads/master: c8aa22db0112f640ac6631347f850879c621840b diff --git a/trunk/net/mac80211/iface.c b/trunk/net/mac80211/iface.c index 00e2238355f0..ceef64426a8d 100644 --- a/trunk/net/mac80211/iface.c +++ b/trunk/net/mac80211/iface.c @@ -1703,6 +1703,15 @@ void ieee80211_remove_interfaces(struct ieee80211_local *local) ASSERT_RTNL(); + /* + * Close all AP_VLAN interfaces first, as otherwise they + * might be closed while the AP interface they belong to + * is closed, causing unregister_netdevice_many() to crash. + */ + list_for_each_entry(sdata, &local->interfaces, list) + if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) + dev_close(sdata->dev); + mutex_lock(&local->iflist_mtx); list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) { list_del(&sdata->list);