• Johannes Berg's avatar
    mac80211: fix race between connection monitor & suspend · 0ecfe806
    Johannes Berg authored
    When the connection monitor timer fires right before
    suspend, the following will happen:
     timer fires -> monitor_work gets queued
     suspend calls ieee80211_sta_quiesce
     ieee80211_sta_quiesce:
      - deletes timer
      - cancels monitor_work synchronously, running it
      [note wrong order of these steps]
     monitor_work runs, re-arming the timer
     later, timer fires while system should be quiesced
    
    This causes a warning:
    
    WARNING: at net/mac80211/util.c:540 ieee80211_can_queue_work+0x35/0x40 [mac80211]()
    
    but is otherwise harmless. I'm not completely sure
    this is the scenario Thomas stumbled across, but it
    is the only way I can right now see the warning in
    a scenario like the one he reported.
    Reported-by: default avatarThomas Meyer <thomas@m3y3r.de>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    0ecfe806
mlme.c 78.2 KB