• Guy Eilam's avatar
    mac80211: fix race condition between assoc_done and first EAP packet · 2a33bee2
    Guy Eilam authored
    When associating to an AP, the station might miss the first EAP
    packet that the AP sends due to a race condition between the association
    success procedure and the rx flow in mac80211.
    In such cases, the packet might fall in ieee80211_rx_h_check due to
    the fact that the relevant rx->sta wasn't allocated yet.
    Allocation of the relevant station info struct before actually
    sending the association request and setting it with a new
    dummy_sta flag solve this problem.
    The station will accept only EAP packets from the AP while it
    is in the pre-association/dummy state.
    This dummy station entry is not seen by normal sta_info_get()
    calls, only by sta_info_get_bss_rx().
    The driver is not notified for the first insertion of the
    dummy station. The driver is notified only after the association
    is complete and the dummy flag is removed from the station entry.
    That way, all the rest of the code flow should be untouched by
    this change.
    Signed-off-by: default avatarGuy Eilam <guy@wizery.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    2a33bee2
sta_info.h 17.1 KB