• Thomas Pedersen's avatar
    mac80211: fix mesh deadlock · ecccd072
    Thomas Pedersen authored
    The patch "cfg80211/mac80211: use cfg80211 wdev mutex in
    mac80211" introduced several deadlocks by converting the
    ifmsh->mtx to wdev->mtx. Solve these by:
    
    1. drop the cancel_work_sync() in ieee80211_stop_mesh().
       Instead make the mesh work conditional on whether the mesh
       is running or not.
    2. lock the mesh work with sdata_lock() to protect beacon
       updates and prevent races with wdev->mesh_id_len or
       cfg80211.
    Signed-off-by: default avatarThomas Pedersen <thomas@cozybit.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    ecccd072
mesh.c 28.7 KB