• Johannes Berg's avatar
    mac80211: fix cfg80211 interaction on auth/assoc request · 7b119dc0
    Johannes Berg authored
    If authentication (or association with FT) is requested by
    userspace, mac80211 currently doesn't tell cfg80211 that it
    disconnected from the AP. That leaves inconsistent state:
    cfg80211 thinks it's connected while mac80211 thinks it's
    not. Typically this won't last long, as soon as mac80211
    reports the new association to cfg80211 the old one goes
    away. If, however, the new authentication or association
    doesn't succeed, then cfg80211 will forever think the old
    one still exists and will refuse attempts to authenticate
    or associate with the AP it thinks it's connected to.
    
    Anders reported that this leads to it taking a very long
    time to reconnect to a network, or never even succeeding.
    I tested this with an AP hacked to never respond to auth
    frames, and one that works, and with just those two the
    system never recovers because one won't work and cfg80211
    thinks it's connected to the other so refuses connections
    to it.
    
    To fix this, simply make mac80211 tell cfg80211 when it is
    no longer connected to the old AP, while authenticating or
    associating to a new one.
    
    Cc: stable@vger.kernel.org
    Reported-by: default avatarAnders Kaseorg <andersk@mit.edu>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    7b119dc0
mlme.c 122 KB