From nobody Thu Sep 24 22:13:11 2026 Received: from mail-wr2-f12.google.com (mail-wr2-f12.google.com [74.125.225.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 35F442253A1 for ; Sat, 19 Sep 2026 17:25:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.76 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789838705; cv=none; b=Gl4QnFLITq79+XVSjSJWgZhOfG92MNzH6ohGQCSTyypoZ8/RCqj8sA0hmJJe3quHIFeb4Pvp2kxb0/CvK0tw85nk2pbfnDDdQc1DdaQK/uTLrEPeJfr233iDRuujOlUUgr3XHiM4ePTJp2mEp6yT2N3TbNE6O2mDDACvngfu61M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789838705; c=relaxed/simple; bh=cyK7AvFuVIRxV7z1jlLK8VNo2VKbGsuB+368KoWPRCI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=H7J/WKMde5WZ90kNYzb3bddpt8FJU8Ehn4x5UbFrE3ebr6mzTfhoJ30tkWlNW+ciBKG2eD0YoCQNGmuIcHWDwZOjVeAXGAdv8Alx+YIA8+oI/jC6r1y887OHe8aRspWrrpv2uKNMrX6ZsjmNulLhwQMy1nT8dymfpQuRqSjQ340= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=p6ORS9un; arc=none smtp.client-ip=74.125.225.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="p6ORS9un" Received: by mail-wr2-f12.google.com with SMTP id ffacd0b85a97d-482f6356f6bso1391010f8f.2 for ; Sat, 19 Sep 2026 10:25:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789838701; x=1790443501; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=fGkju7g7kB+s61OxlUeY2gnephAmIbSK4BwfthATj1w=; b=p6ORS9unfzCY9D2+Vnd36Y/BqdpGP9xlkPFDyTOGsoqqiLYs2XcpcMjF0zyWw2Hbl6 //fn8H9ikpvkorKbEQs0Xr+dZjXIvr0R6YGkJnUSxKe1XXC9DHtW5rhoGO9ARdy2Jkrh CGCPR3A3WxYbvdED4+kkGQ711oNHz2IxJOC0PkgELHPqcNKsoD3mXlIlumNUUU9sNoES xlyjTcMzdz0JrPgE3tel0La2R2tYPcor0P/ckQOim+abymbl0UQuRxqLaVtbjZRTAoYr yf/jT3fgAS0W2RUHTmDROhyPzPLIAJ9tl82skBVxfkGduSPO12SFbhXlWs37tRF1ONG9 Z9Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789838701; x=1790443501; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fGkju7g7kB+s61OxlUeY2gnephAmIbSK4BwfthATj1w=; b=Q8UpkJA7g4Zsd+8p1FT3OXutnDygcYvc5nOsrXgaVWvjL2eCgj5I/lBXpTmmn2sZcZ VCVpJRf6zYv8Ab7WSHoTXkbv1ROBn86wi6+kr/j8QinOjTSq1KL2Ntuhwfbzvwyw0FGu rdeIy7+dTwtD4p2zgSc937pAs4jqRW0AUONkmdtRL51Y2vImNK1JoCwo7eoHgyyIugVW DZHdXwfqcP5GU+rpyNhzZPG9Hfji4j6RNcLp8KK7zKcLcwM9HldekYyOAQ01y9i+nDzP jiq1tL0TWHzLH0boAELNYO1fdmwmIP5S3fAAvXrMlO+eFMlD4vePkqPg0FUty63wa9VE aynw== X-Forwarded-Encrypted: i=1; AKwUvByEggF2FiUj5EQJtHssqiWEs8YjWxdN3FAboFp6xXierIjohrG71r5OXIs7FQvy59PKNJ1Z/dnC4BU5SAQ=@vger.kernel.org X-Gm-Message-State: AFuF++mnGfpVwmTna3WefObF6v1bntooYBIXfRfi0uUlzXDpuOBh5RvL hPuZNcsD5Orpn4GFIBARtM8q5w6p1qnstJZzk6z5QZ+MntnLB2d8KqHFI9m5KVJv X-Gm-Gg: AYBFou2T3rfqH1rcV6+GCiimecL1RS62bknLeCxxMT04JaeTNmdudoLMnCmQcZDWElm G39Vs1/l2ZnuhMrop5bDx3XYIBSjNpQU7I6G9SBFMqfFhIMKoQl9bILR0dYvm1R1QDvcYF9s65J V+iI7I87JS5BryVqNK54w0/+OMO2WnS4duslZKj4L01iEkoa9acIkLFjJ6VqlcOG04xOwktRy+x fdoED0IFtdIthZ5KHeRmk0lHn9NNdQTZj6Wb9Xg63Q6bCyf1epqbjWiwffeRB+Iav7raI/zYMkI KoylEo8Npp58BAN4O8fgWtASJDNdZ+4GWByyzRiP/hW6JTmfHCUcneWfz18MJjV9Nn6sZqLcsLJ eebTH0EBy2kxNTVaD4zTEIzL5FNYxR4YRfRbFdEFDidy1KZ83IniuHu+6m/WNtRT3Pcl1fnHzKl NavEvsbuE9KGKIE64cQmgXJtiupAShH9QYwi+3R12R9yxs3u5UUd12CumB7frVXjVxHMgkZQdpd /lHVSHmKN+aX6tg1OgugLXsJejKJYeYUs8KY0lELVxXUw== X-Received: by 2002:a05:600c:3493:b0:49f:bd3c:bc21 with SMTP id 5b1f17b1804b1-49fc573b55emr86806615e9.28.1789838701065; Sat, 19 Sep 2026 10:25:01 -0700 (PDT) Received: from localhost.localdomain ([176.220.97.85]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fcce144b1sm144778935e9.0.2026.09.19.10.24.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Sep 2026 10:25:00 -0700 (PDT) From: Omer PALA To: Greg Kroah-Hartman , linux-staging@lists.linux.dev (open list:STAGING SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Cc: linux-staging@lists.linux.dev (open list:STAGING SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] staging: rtl8723bs: Use guards for mutexes Date: Sat, 19 Sep 2026 20:24:13 +0300 Message-ID: <20260919172419.60288-1-palaomer100@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Simplify lock management across the rtl8723bs driver by replacing manual spinlock and mutex acquire/release calls with scope-based cleanup guards (guard() and scoped_guard()). This reduces boilerplate code, removes redundant error-path unlock logic, and prevents potential lock leaks on early return statements. Signed-off-by: Omer PALA --- drivers/staging/rtl8723bs/core/rtw_ap.c | 18 +-- drivers/staging/rtl8723bs/core/rtw_cmd.c | 23 ++- .../staging/rtl8723bs/core/rtw_ioctl_set.c | 127 ++++++---------- drivers/staging/rtl8723bs/core/rtw_mlme.c | 3 +- drivers/staging/rtl8723bs/core/rtw_mlme_ext.c | 3 +- drivers/staging/rtl8723bs/core/rtw_pwrctrl.c | 143 +++++++----------- .../staging/rtl8723bs/core/rtw_wlan_util.c | 30 ++-- 7 files changed, 139 insertions(+), 208 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_ap.c b/drivers/staging/rtl8= 723bs/core/rtw_ap.c index 4728f62a1..0ca2fecdc 100644 --- a/drivers/staging/rtl8723bs/core/rtw_ap.c +++ b/drivers/staging/rtl8723bs/core/rtw_ap.c @@ -1912,20 +1912,20 @@ void stop_ap_mode(struct adapter *padapter) padapter->securitypriv.ndisencryptstatus =3D Ndis802_11WEPDisabled; =20 /* for ACL */ - spin_lock_bh(&pacl_node_q->lock); - phead =3D get_list_head(pacl_node_q); - list_for_each_safe(plist, tmp, phead) { - paclnode =3D list_entry(plist, struct rtw_wlan_acl_node, list); + scoped_guard(spinlock_bh, &pacl_node_q->lock) { + phead =3D get_list_head(pacl_node_q); + list_for_each_safe(plist, tmp, phead) { + paclnode =3D list_entry(plist, struct rtw_wlan_acl_node, list); =20 - if (paclnode->valid) { - paclnode->valid =3D false; + if (paclnode->valid) { + paclnode->valid =3D false; =20 - list_del_init(&paclnode->list); + list_del_init(&paclnode->list); =20 - pacl_list->num--; + pacl_list->num--; + } } } - spin_unlock_bh(&pacl_node_q->lock); =20 rtw_sta_flush(padapter); =20 diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl= 8723bs/core/rtw_cmd.c index ce3dfa1fe..1894e447a 100644 --- a/drivers/staging/rtl8723bs/core/rtw_cmd.c +++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c @@ -460,8 +460,7 @@ int rtw_cmd_thread(void *context) cmd_hdl =3D NULL; =20 post_process: - - if (mutex_lock_interruptible(&pcmd->padapter->cmdpriv.sctx_mutex) =3D=3D= 0) { + scoped_cond_guard(mutex_intr, (void)0, &pcmd->padapter->cmdpriv.sctx_mut= ex) { if (pcmd->sctx) { netdev_dbg(padapter->pnetdev, FUNC_ADPT_FMT " pcmd->sctx\n", @@ -472,7 +471,6 @@ int rtw_cmd_thread(void *context) else rtw_sctx_done_err(&pcmd->sctx, RTW_SCTX_DONE_CMD_ERROR); } - mutex_unlock(&pcmd->padapter->cmdpriv.sctx_mutex); } =20 /* call callback function for post-processed */ @@ -655,10 +653,9 @@ int rtw_startbss_cmd(struct adapter *padapter, int fl= ags) =20 if (res =3D=3D _SUCCESS && (flags & RTW_CMDF_WAIT_ACK)) { rtw_sctx_wait(&sctx); - if (mutex_lock_interruptible(&pcmdpriv->sctx_mutex) =3D=3D 0) { + scoped_cond_guard(mutex_intr, (void)0, &pcmdpriv->sctx_mutex) { if (sctx.status =3D=3D RTW_SCTX_SUBMITTED) pcmd->sctx =3D NULL; - mutex_unlock(&pcmdpriv->sctx_mutex); } } } @@ -1406,7 +1403,7 @@ static void rtw_lps_change_dtim_hdl(struct adapter *p= adapter, u8 dtim) if (hal_btcoex_IsBtControlLps(padapter)) return; =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); =20 pwrpriv->dtim =3D dtim; =20 @@ -1415,8 +1412,6 @@ static void rtw_lps_change_dtim_hdl(struct adapter *p= adapter, u8 dtim) =20 rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); } - - mutex_unlock(&pwrpriv->lock); } =20 static void rtw_dm_ra_mask_hdl(struct adapter *padapter, struct sta_info *= psta) @@ -1923,13 +1918,13 @@ void rtw_setassocsta_cmdrsp_callback(struct adapter= *padapter, struct cmd_obj * psta->aid =3D passocsta_rsp->cam_id; psta->mac_id =3D passocsta_rsp->cam_id; =20 - spin_lock_bh(&pmlmepriv->lock); - - if (check_fwstate(pmlmepriv, WIFI_MP_STATE) && check_fwstate(pmlmepriv, _= FW_UNDER_LINKING)) - _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + scoped_guard(spinlock_bh, &pmlmepriv->lock) { + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) && + check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); =20 - set_fwstate(pmlmepriv, _FW_LINKED); - spin_unlock_bh(&pmlmepriv->lock); + set_fwstate(pmlmepriv, _FW_LINKED); + } =20 exit: rtw_free_cmd_obj(pcmd); diff --git a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c b/drivers/stagi= ng/rtl8723bs/core/rtw_ioctl_set.c index 2739d0e99..5a695e973 100644 --- a/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c +++ b/drivers/staging/rtl8723bs/core/rtw_ioctl_set.c @@ -129,25 +129,28 @@ u8 rtw_do_join(struct adapter *padapter) =20 u8 rtw_set_802_11_ssid(struct adapter *padapter, struct ndis_802_11_ssid *= ssid) { - u8 status =3D _SUCCESS; + struct mlme_priv *pmlmepriv; + struct wlan_network *pnetwork; =20 - struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; - struct wlan_network *pnetwork =3D &pmlmepriv->cur_network; + if (!padapter || !ssid || !rtw_validate_ssid(ssid)) + return _FAIL; + + if (!padapter->hw_init_completed) + return _FAIL; + + pmlmepriv =3D &padapter->mlmepriv; + pnetwork =3D &pmlmepriv->cur_network; =20 netdev_dbg(padapter->pnetdev, "set ssid [%s] fw_state =3D 0x%08x\n", ssid->ssid, get_fwstate(pmlmepriv)); =20 - if (!padapter->hw_init_completed) { - status =3D _FAIL; - goto exit; - } - - spin_lock_bh(&pmlmepriv->lock); + guard(spinlock_bh)(&pmlmepriv->lock); =20 if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) goto handle_tkip_countermeasure; - else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) - goto release_mlme_lock; + + if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) + return _SUCCESS; =20 if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE)) { if ((pmlmepriv->assoc_ssid.ssid_length =3D=3D ssid->ssid_length) && @@ -167,7 +170,11 @@ u8 rtw_set_802_11_ssid(struct adapter *padapter, struc= t ndis_802_11_ssid *ssid) set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); } } else { - goto release_mlme_lock;/* it means driver is in WIFI_ADHOC_MASTER_STA= TE, we needn't create bss again. */ + return _SUCCESS; + /* + * it means driver is in WIFI_ADHOC_MASTER_STATE, + * we needn't create bss again. + */ } } else { rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1); @@ -188,30 +195,18 @@ u8 rtw_set_802_11_ssid(struct adapter *padapter, stru= ct ndis_802_11_ssid *ssid) } =20 handle_tkip_countermeasure: - if (rtw_handle_tkip_countermeasure(padapter, __func__) =3D=3D _FAIL) { - status =3D _FAIL; - goto release_mlme_lock; - } - - if (!rtw_validate_ssid(ssid)) { - status =3D _FAIL; - goto release_mlme_lock; - } + if (rtw_handle_tkip_countermeasure(padapter, __func__) =3D=3D _FAIL) + return _FAIL; =20 memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct ndis_802_11_ssid)); pmlmepriv->assoc_by_bssid =3D false; =20 - if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) { pmlmepriv->to_join =3D true; - else - status =3D rtw_do_join(padapter); - -release_mlme_lock: - spin_unlock_bh(&pmlmepriv->lock); - -exit: + return _SUCCESS; + } =20 - return status; + return rtw_do_join(padapter); } =20 u8 rtw_set_802_11_connect(struct adapter *padapter, u8 *bssid, struct ndis= _802_11_ssid *ssid) @@ -219,7 +214,7 @@ u8 rtw_set_802_11_connect(struct adapter *padapter, u8 = *bssid, struct ndis_802_1 u8 status =3D _SUCCESS; bool bssid_valid =3D true; bool ssid_valid =3D true; - struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; + struct mlme_priv *pmlmepriv; =20 if (!ssid || !rtw_validate_ssid(ssid)) ssid_valid =3D false; @@ -227,30 +222,25 @@ u8 rtw_set_802_11_connect(struct adapter *padapter, u= 8 *bssid, struct ndis_802_1 if (!bssid || !rtw_validate_bssid(bssid)) bssid_valid =3D false; =20 - if (!ssid_valid && !bssid_valid) { - status =3D _FAIL; - goto exit; - } + if (!ssid_valid && !bssid_valid) + return _FAIL; =20 - if (!padapter->hw_init_completed) { - status =3D _FAIL; - goto exit; - } + if (!padapter || !padapter->hw_init_completed) + return _FAIL; + + pmlmepriv =3D &padapter->mlmepriv; =20 - spin_lock_bh(&pmlmepriv->lock); + guard(spinlock_bh)(&pmlmepriv->lock); =20 netdev_dbg(padapter->pnetdev, FUNC_ADPT_FMT " fw_state =3D 0x%08x\n", FUNC_ADPT_ARG(padapter), get_fwstate(pmlmepriv)); =20 - if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) - goto handle_tkip_countermeasure; - else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) - goto release_mlme_lock; + if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) + return status; =20 -handle_tkip_countermeasure: if (rtw_handle_tkip_countermeasure(padapter, __func__) =3D=3D _FAIL) { status =3D _FAIL; - goto release_mlme_lock; + return status; } =20 if (ssid && ssid_valid) @@ -270,10 +260,6 @@ u8 rtw_set_802_11_connect(struct adapter *padapter, u8= *bssid, struct ndis_802_1 else status =3D rtw_do_join(padapter); =20 -release_mlme_lock: - spin_unlock_bh(&pmlmepriv->lock); - -exit: return status; } =20 @@ -292,7 +278,7 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *p= adapter, stop_ap_mode(padapter); } =20 - spin_lock_bh(&pmlmepriv->lock); + guard(spinlock_bh)(&pmlmepriv->lock); =20 if (check_fwstate(pmlmepriv, _FW_LINKED) || (*pold_state =3D=3D NL80211_= IFTYPE_ADHOC)) rtw_disassoc_cmd(padapter, 0, true); @@ -331,8 +317,6 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *p= adapter, } =20 /* SecClearAllKeys(adapter); */ - - spin_unlock_bh(&pmlmepriv->lock); } return true; } @@ -341,7 +325,7 @@ u8 rtw_set_802_11_disassociate(struct adapter *padapter) { struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; =20 - spin_lock_bh(&pmlmepriv->lock); + guard(spinlock_bh)(&pmlmepriv->lock); =20 if (check_fwstate(pmlmepriv, _FW_LINKED)) { rtw_disassoc_cmd(padapter, 0, true); @@ -350,43 +334,30 @@ u8 rtw_set_802_11_disassociate(struct adapter *padapt= er) rtw_pwr_wakeup(padapter); } =20 - spin_unlock_bh(&pmlmepriv->lock); - return true; } =20 u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_80= 2_11_ssid *pssid, int ssid_max_num) { - struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; - u8 res =3D true; + struct mlme_priv *pmlmepriv; =20 - if (!padapter) { - res =3D false; - goto exit; - } - if (!padapter->hw_init_completed) { - res =3D false; - goto exit; - } + if (!padapter || !padapter->hw_init_completed) + return false; + + pmlmepriv =3D &padapter->mlmepriv; =20 if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING) || pmlmepriv->link_detect_info.busy_traffic) { /* Scan or linking is in progress, do nothing. */ - res =3D true; - - } else { - if (rtw_is_scan_deny(padapter)) - return _SUCCESS; - - spin_lock_bh(&pmlmepriv->lock); + return true; + } =20 - res =3D rtw_sitesurvey_cmd(padapter, pssid, ssid_max_num, NULL, 0); + if (rtw_is_scan_deny(padapter)) + return _SUCCESS; =20 - spin_unlock_bh(&pmlmepriv->lock); - } -exit: + guard(spinlock_bh)(&pmlmepriv->lock); =20 - return res; + return rtw_sitesurvey_cmd(padapter, pssid, ssid_max_num, NULL, 0); } =20 u8 rtw_set_802_11_authentication_mode(struct adapter *padapter, enum ndis_= 802_11_authentication_mode authmode) diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme.c b/drivers/staging/rt= l8723bs/core/rtw_mlme.c index d18768a51..52b155a35 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme.c @@ -1086,7 +1086,7 @@ void rtw_reset_securitypriv(struct adapter *adapter) u32 backupTKIPcountermeasure_time =3D 0; struct mlme_ext_priv *pmlmeext =3D &adapter->mlmeextpriv; =20 - spin_lock_bh(&adapter->security_key_mutex); + guard(spinlock_bh)(&adapter->security_key_mutex); =20 if (adapter->securitypriv.dot11_auth_algrthm =3D=3D dot11_auth_algrthm_80= 21x) { /* 802.1x */ @@ -1133,7 +1133,6 @@ void rtw_reset_securitypriv(struct adapter *adapter) psec_priv->ndisencryptstatus =3D Ndis802_11WEPDisabled; /* */ } - spin_unlock_bh(&adapter->security_key_mutex); } =20 /* Notes: the function could be > passive_level (the same context as Rx ta= sklet) */ diff --git a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c b/drivers/stagin= g/rtl8723bs/core/rtw_mlme_ext.c index e965133d9..7e499b17d 100644 --- a/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723bs/core/rtw_mlme_ext.c @@ -2015,7 +2015,7 @@ s32 dump_mgntframe_and_wait_ack(struct adapter *padap= ter, struct xmit_frame *pmg return -1; } =20 - if (mutex_lock_interruptible(&pxmitpriv->ack_tx_mutex) =3D=3D 0) { + scoped_cond_guard(mutex_intr, (void)0, &pxmitpriv->ack_tx_mutex) { pxmitpriv->ack_tx =3D true; pxmitpriv->seq_no =3D seq_no++; pmgntframe->ack_report =3D 1; @@ -2023,7 +2023,6 @@ s32 dump_mgntframe_and_wait_ack(struct adapter *padap= ter, struct xmit_frame *pmg ret =3D rtw_ack_tx_wait(pxmitpriv, timeout_ms); =20 pxmitpriv->ack_tx =3D false; - mutex_unlock(&pxmitpriv->ack_tx_mutex); } =20 return ret; diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging= /rtl8723bs/core/rtw_pwrctrl.c index 448611ad8..547fa05ef 100644 --- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c @@ -37,9 +37,8 @@ void ips_enter(struct adapter *padapter) =20 hal_btcoex_IpsNotify(padapter, pwrpriv->ips_mode_req); =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); _ips_enter(padapter); - mutex_unlock(&pwrpriv->lock); } =20 int _ips_leave(struct adapter *padapter) @@ -69,9 +68,9 @@ int ips_leave(struct adapter *padapter) struct pwrctrl_priv *pwrpriv =3D adapter_to_pwrctl(padapter); int ret; =20 - mutex_lock(&pwrpriv->lock); - ret =3D _ips_leave(padapter); - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + ret =3D _ips_leave(padapter); + } =20 if (ret =3D=3D _SUCCESS) hal_btcoex_IpsNotify(padapter, IPS_NONE); @@ -138,9 +137,10 @@ void rtw_ps_processor(struct adapter *padapter) struct pwrctrl_priv *pwrpriv =3D adapter_to_pwrctl(padapter); u32 ps_deny =3D 0; =20 - mutex_lock(&adapter_to_pwrctl(padapter)->lock); - ps_deny =3D rtw_ps_deny_get(padapter); - mutex_unlock(&adapter_to_pwrctl(padapter)->lock); + scoped_guard(mutex, &adapter_to_pwrctl(padapter)->lock) { + ps_deny =3D rtw_ps_deny_get(padapter); + } + if (ps_deny !=3D 0) goto exit; =20 @@ -337,7 +337,7 @@ void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mo= de, if (ps_mode =3D=3D PS_MODE_ACTIVE) return; =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); =20 /* if (pwrpriv->pwr_mode =3D=3D PS_MODE_ACTIVE) */ if (ps_mode =3D=3D PS_MODE_ACTIVE) { @@ -383,8 +383,6 @@ void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mo= de, rtw_set_rpwm(padapter, pslv); } } - - mutex_unlock(&pwrpriv->lock); } =20 /* @@ -488,11 +486,9 @@ void LeaveAllPowerSaveModeDirect(struct adapter *Adapt= er) if (pwrpriv->pwr_mode =3D=3D PS_MODE_ACTIVE) return; =20 - mutex_lock(&pwrpriv->lock); - - rtw_set_rpwm(Adapter, PS_STATE_S4); - - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + rtw_set_rpwm(Adapter, PS_STATE_S4); + } =20 rtw_lps_ctrl_wk_cmd(pri_padapter, LPS_CTRL_LEAVE, 0); } else { @@ -546,14 +542,12 @@ void LPS_Leave_check(struct adapter *padapter) cond_resched(); =20 while (1) { - mutex_lock(&pwrpriv->lock); - - if (padapter->bSurpriseRemoved || - !(padapter->hw_init_completed) || - (pwrpriv->pwr_mode =3D=3D PS_MODE_ACTIVE)) - bReady =3D true; - - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + if (padapter->bSurpriseRemoved || + !(padapter->hw_init_completed) || + (pwrpriv->pwr_mode =3D=3D PS_MODE_ACTIVE)) + bReady =3D true; + } =20 if (bReady) break; @@ -578,10 +572,10 @@ void cpwm_int_hdl(struct adapter *padapter, struct re= portpwrstate_parm *preportp =20 pwrpriv =3D adapter_to_pwrctl(padapter); =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); =20 if (pwrpriv->rpwm < PS_STATE_S2) - goto exit; + return; =20 pwrpriv->cpwm =3D PS_STATE(preportpwrstate->state); pwrpriv->cpwm_tog =3D preportpwrstate->state & PS_TOGGLE; @@ -593,9 +587,6 @@ void cpwm_int_hdl(struct adapter *padapter, struct repo= rtpwrstate_parm *preportp if (pwrpriv->alives & XMIT_ALIVE) complete(&padapter->xmitpriv.xmit_comp); } - -exit: - mutex_unlock(&pwrpriv->lock); } =20 static void cpwm_event_callback(struct work_struct *work) @@ -619,11 +610,10 @@ static void rpwmtimeout_workitem_callback(struct work= _struct *work) dvobj =3D pwrctl_to_dvobj(pwrpriv); padapter =3D dvobj->if1; =20 - mutex_lock(&pwrpriv->lock); - if ((pwrpriv->rpwm =3D=3D pwrpriv->cpwm) || (pwrpriv->cpwm >=3D PS_STATE_= S2)) - goto exit; - - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + if ((pwrpriv->rpwm =3D=3D pwrpriv->cpwm) || (pwrpriv->cpwm >=3D PS_STATE= _S2)) + return; + } =20 if (rtw_read8(padapter, 0x100) !=3D 0xEA) { struct reportpwrstate_parm report; @@ -634,17 +624,14 @@ static void rpwmtimeout_workitem_callback(struct work= _struct *work) return; } =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); =20 if ((pwrpriv->rpwm =3D=3D pwrpriv->cpwm) || (pwrpriv->cpwm >=3D PS_STATE_= S2)) - goto exit; + return; =20 pwrpriv->brpwmtimeout =3D true; rtw_set_rpwm(padapter, pwrpriv->rpwm); pwrpriv->brpwmtimeout =3D false; - -exit: - mutex_unlock(&pwrpriv->lock); } =20 /* @@ -696,21 +683,19 @@ s32 rtw_register_task_alive(struct adapter *padapter,= u32 task) pwrctrl =3D adapter_to_pwrctl(padapter); pslv =3D PS_STATE_S2; =20 - mutex_lock(&pwrctrl->lock); - - register_task_alive(pwrctrl, task); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, task); =20 - if (pwrctrl->fw_current_in_ps_mode) { - if (pwrctrl->cpwm < pslv) { - if (pwrctrl->cpwm < PS_STATE_S2) - res =3D _FAIL; - if (pwrctrl->rpwm < pslv) - rtw_set_rpwm(padapter, pslv); + if (pwrctrl->fw_current_in_ps_mode) { + if (pwrctrl->cpwm < pslv) { + if (pwrctrl->cpwm < PS_STATE_S2) + res =3D _FAIL; + if (pwrctrl->rpwm < pslv) + rtw_set_rpwm(padapter, pslv); + } } } =20 - mutex_unlock(&pwrctrl->lock); - if (res =3D=3D _FAIL) if (pwrctrl->cpwm >=3D PS_STATE_S2) res =3D _SUCCESS; @@ -744,7 +729,7 @@ void rtw_unregister_task_alive(struct adapter *padapter= , u32 task) pslv =3D PS_STATE_S2; } =20 - mutex_lock(&pwrctrl->lock); + guard(mutex)(&pwrctrl->lock); =20 unregister_task_alive(pwrctrl, task); =20 @@ -754,8 +739,6 @@ void rtw_unregister_task_alive(struct adapter *padapter= , u32 task) rtw_set_rpwm(padapter, pslv); } } - - mutex_unlock(&pwrctrl->lock); } =20 /* @@ -781,21 +764,19 @@ s32 rtw_register_tx_alive(struct adapter *padapter) pwrctrl =3D adapter_to_pwrctl(padapter); pslv =3D PS_STATE_S2; =20 - mutex_lock(&pwrctrl->lock); - - register_task_alive(pwrctrl, XMIT_ALIVE); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, XMIT_ALIVE); =20 - if (pwrctrl->fw_current_in_ps_mode) { - if (pwrctrl->cpwm < pslv) { - if (pwrctrl->cpwm < PS_STATE_S2) - res =3D _FAIL; - if (pwrctrl->rpwm < pslv) - rtw_set_rpwm(padapter, pslv); + if (pwrctrl->fw_current_in_ps_mode) { + if (pwrctrl->cpwm < pslv) { + if (pwrctrl->cpwm < PS_STATE_S2) + res =3D _FAIL; + if (pwrctrl->rpwm < pslv) + rtw_set_rpwm(padapter, pslv); + } } } =20 - mutex_unlock(&pwrctrl->lock); - if (res =3D=3D _FAIL) if (pwrctrl->cpwm >=3D PS_STATE_S2) res =3D _SUCCESS; @@ -826,21 +807,19 @@ s32 rtw_register_cmd_alive(struct adapter *padapter) pwrctrl =3D adapter_to_pwrctl(padapter); pslv =3D PS_STATE_S2; =20 - mutex_lock(&pwrctrl->lock); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, CMD_ALIVE); =20 - register_task_alive(pwrctrl, CMD_ALIVE); - - if (pwrctrl->fw_current_in_ps_mode) { - if (pwrctrl->cpwm < pslv) { - if (pwrctrl->cpwm < PS_STATE_S2) - res =3D _FAIL; - if (pwrctrl->rpwm < pslv) - rtw_set_rpwm(padapter, pslv); + if (pwrctrl->fw_current_in_ps_mode) { + if (pwrctrl->cpwm < pslv) { + if (pwrctrl->cpwm < PS_STATE_S2) + res =3D _FAIL; + if (pwrctrl->rpwm < pslv) + rtw_set_rpwm(padapter, pslv); + } } } =20 - mutex_unlock(&pwrctrl->lock); - if (res =3D=3D _FAIL) if (pwrctrl->cpwm >=3D PS_STATE_S2) res =3D _SUCCESS; @@ -871,7 +850,7 @@ void rtw_unregister_tx_alive(struct adapter *padapter) pslv =3D PS_STATE_S2; } =20 - mutex_lock(&pwrctrl->lock); + guard(mutex)(&pwrctrl->lock); =20 unregister_task_alive(pwrctrl, XMIT_ALIVE); =20 @@ -880,8 +859,6 @@ void rtw_unregister_tx_alive(struct adapter *padapter) if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) rtw_set_rpwm(padapter, pslv); } - - mutex_unlock(&pwrctrl->lock); } =20 /* @@ -907,7 +884,7 @@ void rtw_unregister_cmd_alive(struct adapter *padapter) pslv =3D PS_STATE_S2; } =20 - mutex_lock(&pwrctrl->lock); + guard(mutex)(&pwrctrl->lock); =20 unregister_task_alive(pwrctrl, CMD_ALIVE); =20 @@ -917,8 +894,6 @@ void rtw_unregister_cmd_alive(struct adapter *padapter) rtw_set_rpwm(padapter, pslv); } } - - mutex_unlock(&pwrctrl->lock); } =20 void rtw_init_pwrctrl_priv(struct adapter *padapter) @@ -1108,9 +1083,8 @@ void rtw_ps_deny(struct adapter *padapter, enum ps_de= ny_reason reason) =20 pwrpriv =3D adapter_to_pwrctl(padapter); =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); pwrpriv->ps_deny |=3D BIT(reason); - mutex_unlock(&pwrpriv->lock); } =20 /* @@ -1123,9 +1097,8 @@ void rtw_ps_deny_cancel(struct adapter *padapter, enu= m ps_deny_reason reason) =20 pwrpriv =3D adapter_to_pwrctl(padapter); =20 - mutex_lock(&pwrpriv->lock); + guard(mutex)(&pwrpriv->lock); pwrpriv->ps_deny &=3D ~BIT(reason); - mutex_unlock(&pwrpriv->lock); } =20 /* diff --git a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c b/drivers/stagi= ng/rtl8723bs/core/rtw_wlan_util.c index 8c1f46706..e14d4ffde 100644 --- a/drivers/staging/rtl8723bs/core/rtw_wlan_util.c +++ b/drivers/staging/rtl8723bs/core/rtw_wlan_util.c @@ -296,15 +296,12 @@ inline unsigned long rtw_get_on_cur_ch_time(struct ad= apter *adapter) =20 void r8723bs_select_channel(struct adapter *padapter, unsigned char channe= l) { - if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->setch_mutex))) - return; - - /* saved channel info */ - rtw_set_oper_ch(padapter, channel); + scoped_cond_guard(mutex_intr, return, &(adapter_to_dvobj(padapter)->setch= _mutex)) { + /* saved channel info */ + rtw_set_oper_ch(padapter, channel); =20 - rtw_hal_set_chan(padapter, channel); - - mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex)); + rtw_hal_set_chan(padapter, channel); + } } =20 void set_channel_bwmode(struct adapter *padapter, unsigned char channel, u= nsigned char channel_offset, unsigned short bwmode) @@ -314,17 +311,14 @@ void set_channel_bwmode(struct adapter *padapter, uns= igned char channel, unsigne center_ch =3D rtw_get_center_ch(channel, bwmode, channel_offset); =20 /* set Channel */ - if (mutex_lock_interruptible(&(adapter_to_dvobj(padapter)->setch_mutex))) - return; - - /* saved channel/bw info */ - rtw_set_oper_ch(padapter, channel); - rtw_set_oper_bw(padapter, bwmode); - rtw_set_oper_choffset(padapter, channel_offset); + scoped_cond_guard(mutex_intr, return, &(adapter_to_dvobj(padapter)->setch= _mutex)) { + /* saved channel/bw info */ + rtw_set_oper_ch(padapter, channel); + rtw_set_oper_bw(padapter, bwmode); + rtw_set_oper_choffset(padapter, channel_offset); =20 - rtw_hal_set_chnl_bw(padapter, center_ch, bwmode, channel_offset, chnl_off= set80); /* set center channel */ - - mutex_unlock(&(adapter_to_dvobj(padapter)->setch_mutex)); + rtw_hal_set_chnl_bw(padapter, center_ch, bwmode, channel_offset, chnl_of= fset80); /* set center channel */ + } } =20 inline u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork) --=20 2.55.0