Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47acf6f5 authored by Christian Engelmayer's avatar Christian Engelmayer Committed by John W. Linville
Browse files

wireless: cw1200: Fix memory leak in cw1200_wow_suspend()



Fix a memory leak in the cw1200_wow_suspend() error handling path.

Signed-off-by: default avatarChristian Engelmayer <cengelma@gmx.at>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2c323058
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ int cw1200_wow_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
		cw1200_set_pm(priv, &priv->powersave_mode);
		if (wait_event_interruptible_timeout(priv->ps_mode_switch_done,
						     !priv->ps_mode_switch_in_progress, 1*HZ) <= 0) {
			goto revert3;
			goto revert4;
		}
	}

@@ -254,11 +254,11 @@ int cw1200_wow_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)

	/* Stop serving thread */
	if (cw1200_bh_suspend(priv))
		goto revert4;
		goto revert5;

	ret = timer_pending(&priv->mcast_timeout);
	if (ret)
		goto revert5;
		goto revert6;

	/* Store suspend state */
	pm_state->suspend_state = state;
@@ -280,9 +280,9 @@ int cw1200_wow_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)

	return 0;

revert5:
revert6:
	WARN_ON(cw1200_bh_resume(priv));
revert4:
revert5:
	cw1200_resume_work(priv, &priv->bss_loss_work,
			   state->bss_loss_tmo);
	cw1200_resume_work(priv, &priv->join_timeout,
@@ -291,6 +291,7 @@ int cw1200_wow_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
			   state->direct_probe);
	cw1200_resume_work(priv, &priv->link_id_gc_work,
			   state->link_id_gc);
revert4:
	kfree(state);
revert3:
	wsm_set_udp_port_filter(priv, &cw1200_udp_port_filter_off);