diff mbox

mac80211: stop plink timer only on mesh interfaces

Message ID 1360015961-5922-1-git-send-email-thomas@cozybit.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Thomas Pedersen Feb. 4, 2013, 10:12 p.m. UTC
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>
Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
---

Hi Emmanuel,

Will you please test this patch?

 net/mac80211/mesh_plink.c |    3 +++
 1 file changed, 3 insertions(+)

Comments

Emmanuel Grumbach Feb. 5, 2013, 6:41 a.m. UTC | #1
> 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>
> Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
> ---
> 
> Hi Emmanuel,
> 
> Will you please test this patch?
> 
>  net/mac80211/mesh_plink.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
> index 81e6126..1f40c4a 100644
> --- a/net/mac80211/mesh_plink.c
> +++ b/net/mac80211/mesh_plink.c
> @@ -528,6 +528,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;
>  }
> --
> 1.7.10.4

Tested-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---------------------------------------------------------------------
A member of the Intel Corporation group of companies

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Feb. 5, 2013, 10 a.m. UTC | #2
On Mon, 2013-02-04 at 14:12 -0800, Thomas Pedersen wrote:
> 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.

Applied, thanks.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c
index 81e6126..1f40c4a 100644
--- a/net/mac80211/mesh_plink.c
+++ b/net/mac80211/mesh_plink.c
@@ -528,6 +528,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;
 }