Commit d98c2461 authored by Bart Van Assche's avatar Bart Van Assche Committed by Johannes Berg
Browse files

wifi: cw1200: Fix locking in error paths



cw1200_wow_suspend() must only return with priv->conf_mutex locked if it
returns zero. This mutex must be unlocked if an error is returned. Add
mutex_unlock() calls to the error paths from which that call is missing.
This has been detected by the Clang thread-safety analyzer.

Fixes: a910e4a9 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20260223220102.2158611-25-bart.vanassche@linux.dev


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 8fb54c73
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -264,12 +264,14 @@ int cw1200_wow_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
		wiphy_err(priv->hw->wiphy,
			  "PM request failed: %d. WoW is disabled.\n", ret);
		cw1200_wow_resume(hw);
		mutex_unlock(&priv->conf_mutex);
		return -EBUSY;
	}

	/* Force resume if event is coming from the device. */
	if (atomic_read(&priv->bh_rx)) {
		cw1200_wow_resume(hw);
		mutex_unlock(&priv->conf_mutex);
		return -EAGAIN;
	}