[PATCH 2/2] staging: rtl8723bs: use scoped_guard() for mid-function locking
Samrudh Nelli <[email protected]>
| Newsgroups | gmane.linux.kernel |
|---|---|
| Message-ID | <00636f947374922728394534428180bb804bd562.1787421961.git.samrudhnelli@gmail.com> |
Replace classic mutex_lock() / mutex_unlock() pairs with the scoped_guard(mutex) macro in functions where the lock is intentionally dropped before the function returns. This isolates the critical sections explicitly within block scopes, eliminating the need for goto-based error handling (e.g., in rpwmtimeout_workitem_callback()) while ensuring the lock duration remains strictly identical to the original implementation. Signed-off-by: Samrudh Nelli <[email protected]> --- drivers/staging/rtl8723bs/core/rtw_pwrctrl.c | 121 +++++++++---------- 1 file changed, 54 insertions(+), 67 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c index 18163a3dbade..913d77351725 100644 --- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c @@ -69,9 +69,9 @@ int ips_leave(struct adapter *padapter) struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); int ret; - mutex_lock(&pwrpriv->lock); - ret = _ips_leave(padapter); - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + ret = _ips_leave(padapter); + } if (ret == _SUCCESS) hal_btcoex_IpsNotify(padapter, IPS_NONE); @@ -138,9 +138,10 @@ void rtw_ps_processor(struct adapter *padapter) struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); u32 ps_deny = 0; - mutex_lock(&adapter_to_pwrctl(padapter)->lock); - ps_deny = rtw_ps_deny_get(padapter); - mutex_unlock(&adapter_to_pwrctl(padapter)->lock); + scoped_guard(mutex, &adapter_to_pwrctl(padapter)->lock) { + ps_deny = rtw_ps_deny_get(padapter); + } + if (ps_deny != 0) goto exit; @@ -486,11 +487,9 @@ void LeaveAllPowerSaveModeDirect(struct adapter *Adapter) if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) return; - 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); + } rtw_lps_ctrl_wk_cmd(pri_padapter, LPS_CTRL_LEAVE, 0); } else { @@ -544,14 +543,12 @@ void LPS_Leave_check(struct adapter *padapter) cond_resched(); while (1) { - mutex_lock(&pwrpriv->lock); - - if (padapter->bSurpriseRemoved || - !(padapter->hw_init_completed) || - (pwrpriv->pwr_mode == PS_MODE_ACTIVE)) - bReady = true; - - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + if (padapter->bSurpriseRemoved || + !(padapter->hw_init_completed) || + (pwrpriv->pwr_mode == PS_MODE_ACTIVE)) + bReady = true; + } if (bReady) break; @@ -614,11 +611,10 @@ static void rpwmtimeout_workitem_callback(struct work_struct *work) dvobj = pwrctl_to_dvobj(pwrpriv); padapter = dvobj->if1; - mutex_lock(&pwrpriv->lock); - if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2)) - goto exit; - - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2)) + return; + } if (rtw_read8(padapter, 0x100) != 0xEA) { struct reportpwrstate_parm report; @@ -629,17 +625,14 @@ static void rpwmtimeout_workitem_callback(struct work_struct *work) return; } - mutex_lock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2)) + return; - if ((pwrpriv->rpwm == pwrpriv->cpwm) || (pwrpriv->cpwm >= PS_STATE_S2)) - goto exit; - - pwrpriv->brpwmtimeout = true; - rtw_set_rpwm(padapter, pwrpriv->rpwm); - pwrpriv->brpwmtimeout = false; - -exit: - mutex_unlock(&pwrpriv->lock); + pwrpriv->brpwmtimeout = true; + rtw_set_rpwm(padapter, pwrpriv->rpwm); + pwrpriv->brpwmtimeout = false; + } } /* @@ -691,21 +684,19 @@ s32 rtw_register_task_alive(struct adapter *padapter, u32 task) pwrctrl = adapter_to_pwrctl(padapter); pslv = PS_STATE_S2; - mutex_lock(&pwrctrl->lock); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, task); - register_task_alive(pwrctrl, task); - - if (pwrctrl->fw_current_in_ps_mode) { - if (pwrctrl->cpwm < pslv) { - if (pwrctrl->cpwm < PS_STATE_S2) - res = _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 = _FAIL; + if (pwrctrl->rpwm < pslv) + rtw_set_rpwm(padapter, pslv); + } } } - mutex_unlock(&pwrctrl->lock); - if (res == _FAIL) if (pwrctrl->cpwm >= PS_STATE_S2) res = _SUCCESS; @@ -774,21 +765,19 @@ s32 rtw_register_tx_alive(struct adapter *padapter) pwrctrl = adapter_to_pwrctl(padapter); pslv = PS_STATE_S2; - mutex_lock(&pwrctrl->lock); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, XMIT_ALIVE); - register_task_alive(pwrctrl, XMIT_ALIVE); - - if (pwrctrl->fw_current_in_ps_mode) { - if (pwrctrl->cpwm < pslv) { - if (pwrctrl->cpwm < PS_STATE_S2) - res = _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 = _FAIL; + if (pwrctrl->rpwm < pslv) + rtw_set_rpwm(padapter, pslv); + } } } - mutex_unlock(&pwrctrl->lock); - if (res == _FAIL) if (pwrctrl->cpwm >= PS_STATE_S2) res = _SUCCESS; @@ -819,21 +808,19 @@ s32 rtw_register_cmd_alive(struct adapter *padapter) pwrctrl = adapter_to_pwrctl(padapter); pslv = PS_STATE_S2; - mutex_lock(&pwrctrl->lock); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, CMD_ALIVE); - register_task_alive(pwrctrl, CMD_ALIVE); - - if (pwrctrl->fw_current_in_ps_mode) { - if (pwrctrl->cpwm < pslv) { - if (pwrctrl->cpwm < PS_STATE_S2) - res = _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 = _FAIL; + if (pwrctrl->rpwm < pslv) + rtw_set_rpwm(padapter, pslv); + } } } - mutex_unlock(&pwrctrl->lock); - if (res == _FAIL) if (pwrctrl->cpwm >= PS_STATE_S2) res = _SUCCESS; -- 2.55.0