]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: cw1200: Fix locking in error paths
authorBart Van Assche <bvanassche@acm.org>
Mon, 23 Feb 2026 22:00:24 +0000 (14:00 -0800)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 3 Mar 2026 11:00:51 +0000 (12:00 +0100)
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: a910e4a94f69 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20260223220102.2158611-25-bart.vanassche@linux.dev
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/st/cw1200/pm.c

index 120f0379f81dd559f1b00a74234f9489b65cf71b..84eb15d729c70da8ed144689622c947db6be645a 100644 (file)
@@ -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;
        }