• Johannes Berg's avatar
    mac80211: recalculate SW ROC only when needed · e9db4557
    Johannes Berg authored
    The current (new) code recalculates the new work timeout
    for software remain-on-channel whenever any item started.
    In two of the callers of ieee80211_handle_roc_started(),
    this is completely pointless since they're for hardware
    and will skip the recalculation entirely; it's necessary
    only in the case of having just added a new item to the
    list, as in the last remaining case the recalculation had
    just been done.
    
    This last case, however, is also problematic - if one of
    the items on the list actually expires during the recalc
    the list iteration outside becomes corrupted and crashes.
    
    Fix this by moving the recalculation to the only place
    where it's required.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    e9db4557
offchannel.c 26.1 KB