• Johannes Berg's avatar
    mac80211: close AP_VLAN interfaces before unregistering all · 4c8a9d4b
    Johannes Berg authored
    Since Eric's commit efe117ab ("Speedup ieee80211_remove_interfaces")
    there's a bug in mac80211 when it unregisters with AP_VLAN interfaces
    up. If the AP_VLAN interface was registered after the AP it belongs
    to (which is the typical case) and then we get into this code path,
    unregister_netdevice_many() will crash because it isn't prepared to
    deal with interfaces being closed in the middle of it. Exactly this
    happens though, because we iterate the list, find the AP master this
    AP_VLAN belongs to and dev_close() the dependent VLANs. After this,
    unregister_netdevice_many() won't pick up the fact that the AP_VLAN
    is already down and will do it again, causing a crash.
    Cc: stable@vger.kernel.org [2.6.33+]
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
iface.c 45.2 KB