• Johannes Berg's avatar
    mac80211: fix resume · ceb99fe0
    Johannes Berg authored
    When mac80211 resumes, it currently first sets suspended
    to false so the driver can start doing things and we can
    receive frames.
    
    However, if we actually receive frames then it can end
    up starting some work which adds timers and then later
    runs into a BUG_ON in the timer code because it tries
    add_timer() on a pending timer.
    
    Fix this by keeping track of the resuming process by
    introducing a new variable 'resuming' which gets set to
    true early on instead of setting 'suspended' to false,
    and allow queueing work but not receiving frames while
    resuming.
    Reported-by: default avatarMaxim Levitsky <maximlevitsky@gmail.com>
    Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    ceb99fe0
util.c 29.1 KB