diff options
author | Thomas Pedersen <thomas@cozybit.com> | 2013-02-04 23:12:41 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-02-05 11:00:09 +0100 |
commit | aa5a1b8e68c95151fd249a3b5ec444c6b0aa2f1c (patch) | |
tree | a789a412a0633b759bf11b4c1395c99380063fe5 /net/mac80211/mesh_plink.c | |
parent | mac80211: mesh power save basics (diff) | |
download | linux-aa5a1b8e68c95151fd249a3b5ec444c6b0aa2f1c.tar.xz linux-aa5a1b8e68c95151fd249a3b5ec444c6b0aa2f1c.zip |
mac80211: stop plink timer only on mesh interfaces
Since mesh_plink_quiesce() would unconditionally delete
the plink timer, and the timer initialization was recently
moved into the mesh code path, suspending with a non-mesh
interface now causes a crash. Fix this by only deleting
the plink timer for mesh interfaces.
Reported-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Tested-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mesh_plink.c')
-rw-r--r-- | net/mac80211/mesh_plink.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c index fe7c3334d6fe..67524e7d2548 100644 --- a/net/mac80211/mesh_plink.c +++ b/net/mac80211/mesh_plink.c @@ -592,6 +592,9 @@ static void mesh_plink_timer(unsigned long data) #ifdef CONFIG_PM void mesh_plink_quiesce(struct sta_info *sta) { + if (!ieee80211_vif_is_mesh(&sta->sdata->vif)) + return; + if (del_timer_sync(&sta->plink_timer)) sta->plink_timer_was_running = true; } |