From nobody Sun Apr 26 09:29:17 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 D4DE3292926 for ; Thu, 24 Apr 2025 19:56:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745524602; cv=none; b=GaIGV7r8tCmSI8JAVlpsGnAs/RtcOg+FIS666sbtxg9V3KuS7BEW/so73XFB5xtf7ra0A4SQa65LAHlB88O1fuvG8XhRk8tHsYaN7U9nUyXnaEqKAHb7v/ueTihBBxCLM53fhKTf2eY50VgCB5KY+F8LfyqErzflBdIIwZPjmTM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745524602; c=relaxed/simple; bh=c4CUo+/JylgmaihWgYUtHXSPoEaVeXvdhre1BrOseBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OIKSCmER0RKoWUt3HocZOhVtXIcYclYvyhUfVc9+w0VeD8R1rLx/6QjdYq65VK1wIbWasntlNLnqIVhKqAwiJiIzcKb43xlqQe6pTmtqZiIh7uMgB+Y7Hy4IT5hGXmXr91ZbtyfE3oXQ+L4dSkJ855CRAMvyQ0LZPU0Ljc59Llk= 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=XEruWkRn; arc=none smtp.client-ip=209.85.128.54 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="XEruWkRn" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-43cfebc343dso9944165e9.2 for ; Thu, 24 Apr 2025 12:56:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745524599; x=1746129399; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LNsyCS6OEhFOZzOuI2mbWi5oCCOoIo6/OBcXxx1IRf0=; b=XEruWkRnmf7Sg0zg7zV3pLEWMizUtka/YyTmxRlYmoHiHBSDimoJT548DK0wc0YO65 BR4DWFMl6VPvs6tWlXKrJG8EUhot59WqDL7s1a9Lf2q3yHPGsVf2245ZfhYqgrdhzxrq TzlKHSJDENOwdXAqoUeaJQpaYaUhuvBg7Gm2l0JA0lBGleukN4Z/JxyrQGN3uvg39O3T xopU8vL47Xs8uR49IpFSDS0WvDaDA1YmTiAp+39yEhPsTne2amGILgWuqrPvtS+TaxNZ jY4hj/XUDi20tQr4y12b/O1XblhDItQGHqCCJlWw8Og0L1CSwwRd48RgRstNiODaGywN f3RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745524599; x=1746129399; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LNsyCS6OEhFOZzOuI2mbWi5oCCOoIo6/OBcXxx1IRf0=; b=QccDdT8v54vJDKHeKCRmVTYogVAMmZcLxcwQoq28VCe6803HVYwb5Qv8Jt3NvwLY1w /c/swApDH+WtXjdtrKq3k8o9Hgn01k4TPo5aoS0TnteuIWIXwEZnH8ieGY2M2WnL4mG3 /0xwVoyHbNkRYcBxpJCoP17lGs5KZIfRkoyMVfOdSOE4xsNxfQMS48NCDUbsn50J5KgL Me4Xs3gYA5StNk2a2xN3KSc/wxivXBokKynJAUh0iUEOVVQq4wFJhB3tdxzCjQA5JL9H VFZwPJMhtkIFj3TtHbnVQfx7Xksm7nKiMZco8Y79whS0YjeCa06jAEMpOG4BmQ7f0rbH U+Yg== X-Forwarded-Encrypted: i=1; AJvYcCUCVFcke0Ap0ykk6jXcmtRknihZMd4E2bdY05sTCBZfl3LLTuEnhqH1Po8dAwmUeRQEQOF3oGpVGSKaj48=@vger.kernel.org X-Gm-Message-State: AOJu0YxSOBzF9/MyHWPNOGBNmwRuOrbZXSHxMHDH82HPYt2+TdPxPyy6 QhsIPXnL20Okpv+2bLbTocURF3EtBZGXHsmKUDocYAZ84MpUKuLW X-Gm-Gg: ASbGnct+qYAGdAUHsl0lSYweoziTim0A1nF0zfKN9g0fhxYdR9650JLrFxs37mIcJlw l43FQ+n/nE32jTCpOcHCkBZfDCBjafO+M7K9ank1vFUVZbUnvVgOWUmxWN2jJ7lVwVczMg9jyYr phaRi7/DFN/K+bsEa4NgbUJSIPug41Go+Cng5erEuWVnYnOT57uYCK2hJTqSyKAGzddYmyq+/78 DZfQGYLO6r4WElVtyQK4WU50NQUIRI1Q3iE00Bhm1U9CT1dasPyWt290y8vdh59IG1jeC2F6oHf EFnRQ5wwU4VPZBWg6er09cv/aSSr5JT2Ir8B6Q== X-Google-Smtp-Source: AGHT+IHFi0zUQkJRZ2PdmOlKL/x6paZBuwZj4y+qAl3g29wVN+gHx6m2fnhq9wVmqRu3TlUGrX43iw== X-Received: by 2002:a05:600c:3496:b0:43b:cc42:c54f with SMTP id 5b1f17b1804b1-4409bd18487mr40086235e9.14.1745524599090; Thu, 24 Apr 2025 12:56:39 -0700 (PDT) Received: from pc.. ([196.96.160.244]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4409d2d8842sm32385865e9.31.2025.04.24.12.56.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 12:56:38 -0700 (PDT) From: Erick Karanja To: gregkh@linuxfoundation.org Cc: julia.lawall@inria.fr, karanja99erick@gmail.com, philipp.g.hortmann@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] staging: rtl8723bs: Replace manual mutex handling with scoped_guard() Date: Thu, 24 Apr 2025 22:56:25 +0300 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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" Replace explicit calls to `mutex_lock()` and `mutex_unlock()` with a `scoped_guard` block to manage locking automatically. This refactoring improves code safety and clarity by ensuring the mutex is always released, even if an early return is later added. Signed-off-by: Erick Karanja --- drivers/staging/rtl8723bs/core/rtw_cmd.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_cmd.c b/drivers/staging/rtl= 8723bs/core/rtw_cmd.c index 946511793c08..d018d8e0bf4d 100644 --- a/drivers/staging/rtl8723bs/core/rtw_cmd.c +++ b/drivers/staging/rtl8723bs/core/rtw_cmd.c @@ -1404,17 +1404,15 @@ static void rtw_lps_change_dtim_hdl(struct adapter = *padapter, u8 dtim) if (hal_btcoex_IsBtControlLps(padapter)) return; =20 - mutex_lock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + pwrpriv->dtim =3D dtim; =20 - pwrpriv->dtim =3D dtim; + if (pwrpriv->fw_current_in_ps_mode && (pwrpriv->pwr_mode > PS_MODE_ACTIV= E)) { + u8 ps_mode =3D pwrpriv->pwr_mode; =20 - if (pwrpriv->fw_current_in_ps_mode && (pwrpriv->pwr_mode > PS_MODE_ACTIVE= )) { - u8 ps_mode =3D pwrpriv->pwr_mode; - - rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); + 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) --=20 2.43.0 From nobody Sun Apr 26 09:29:17 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 658A0293B45 for ; Thu, 24 Apr 2025 19:56:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745524609; cv=none; b=duz8FHrsyeQyxty3bGOJzdvWiV2t53BSHS8CkmqGxz+umrrzQ0J9bw4tzHd4qPYITp+mlL9r/Gs/UbMRYKilt6emaOeHL0DKXnV+ya664CRJAN2D9qysvXk19xtZ972B5OX0/tqx2Mxm3fZ9PDe1M/pbGUPOCrpKb8PqudrVWrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745524609; c=relaxed/simple; bh=h2xLWijHqsJh9aCM5jzbFrl2+AYQJ6rdD8ZscR+zgn0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TWB5/2cFOhgAp4EtlLP3+g8JazJ7eFunQS4oHUTWWgqPUwVIO81ZoPwYC090pA8f15U0Ye71TR6GNrrRrd914wbF6/etuxMBM77JMC5c0BivMFHofgKbGLdZEXYdTGaz8dIbCxo9GLYU+T4GsCe+ekzRR2y+jQQqoCIkd5tqtpw= 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=mnvOQ5+j; arc=none smtp.client-ip=209.85.128.44 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="mnvOQ5+j" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-43d0618746bso11278395e9.2 for ; Thu, 24 Apr 2025 12:56:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745524606; x=1746129406; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3iqalMRN1Too28MdqO5MJFFqCooDYv/cQAN3f6XGglg=; b=mnvOQ5+jCn/vwMZxzalkwExWtTLEIFjjYGJ4B+1mbiTAiC3EC3hYIgK0Xo9pk3/juD qxszY4f6IuzJz2elQPoytAG3jEmJKo5tJBFjHu+It8KbcF4ZS4BdVzzbPtMU/Z3aupSs C8cvr0GQ8bFmXSJSCw9EZemAR3yvoSb53hCqjTMQAA2ahsz4KsbSx8ds6EQWe/jnjLFv ZPnGpHQOkMPng4NSMzfPxGB3Cdw/xQExYCg/8zTdfH02sBThPzSzaGRrBBohIswkzB4Q BSBWvjvtd7Lx+6+Aia14cXZn71+SCc8rMeJ3h+Ix/jRKKUWGj/TG8WIyO0amYOv802sV x0NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745524606; x=1746129406; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3iqalMRN1Too28MdqO5MJFFqCooDYv/cQAN3f6XGglg=; b=AgFzxFmNpQYRRZNaN5Ezg/gF2CUxIpzILPZptIw4DlpQJ1jhA7Y45btmVB2OK8RCyQ +Ifpn8aKyyiewigKnmyzrZ5LPSATHzdC1pHQoc/dStd4QFnpBwJ3RO/H02jSXEhaomUB pzpsiSJdqhk6EZuzvcer+WM6rwr/M4Wiwf5mnZ4liGCG2hYEtXi1mZ7oIFK/OTrMg8g+ uhxd3EGkPgDeu0ObCUyVAqnTX1dtMVgExIYGKtggoonUwIO71guNs/Bz5Eg46AqJLwIx tCR0Iaaktrx/stEbeXU2iC8JulUvpzXzBDV0aZGCvcLtsbQilAc28ypYLT4ew2jaj6Ye HosA== X-Forwarded-Encrypted: i=1; AJvYcCUDXCXISVAybzHAukXPEcsUbLAjKjE8z81q1Il8qyjbmGuYB3FBNhSaKoLlCgYnRCv08wOS7emi38GMdkw=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6VI159dvaIOAF0GorlJaY4FIsv/fSh7+uw6rvs59BsRBNFj5N gg+RBRuhEXLVphLVsDZFcqDRpEjChCBP7CQ9Q1N5ClpH8fj4drlP X-Gm-Gg: ASbGncu7ap9GqLFMaXqNJ31ul8Kbh4QPieQc9jW+N7YskI+5CbVH+dAFMHP+CZsjp8u o1WDAFWmGYs4v+f13nTtqleP/V7HBwc9I1TPk4cqxm4N5J+ycEk52VTKWnmi5wLZ4CGIfNqvidC djTl6KF0Gl9Ke4MQVStQoBuOFtPNcnwpop78Rvgmu27pRNx6K4NG74F7l4BUyMnCLH4JiwtKu6e 0QMY75NCnhJC1Al8M0blIp5Lx8LzegZ9x34aiCoX+Axf5zdGWckiLCJUkEMWMCFHZveUcmC6Efp uDTKKFZFSxHXsMO65qNhBH3UpORemjikYSegOw== X-Google-Smtp-Source: AGHT+IExC2q4mO+fw159QN/Yjr1iCoX4oGeYYkxFXi5fVEEy/XwZMeNXuIoCI4cNamXLAMNHvmb9pQ== X-Received: by 2002:a05:600c:1912:b0:43c:eea9:f45d with SMTP id 5b1f17b1804b1-440a310e4cemr7584505e9.18.1745524605429; Thu, 24 Apr 2025 12:56:45 -0700 (PDT) Received: from pc.. ([196.96.160.244]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4409d2d8842sm32385865e9.31.2025.04.24.12.56.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 12:56:45 -0700 (PDT) From: Erick Karanja To: gregkh@linuxfoundation.org Cc: julia.lawall@inria.fr, karanja99erick@gmail.com, philipp.g.hortmann@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] staging: rtl8723bs: Switch mutexes to scoped_guard Date: Thu, 24 Apr 2025 22:56:26 +0300 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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" Replace manual mutex_lock/mutex_unlock and goto-based cleanup with a scoped_guard block. This ensures the mutex is always released safely, even on early returns, and removes the need for error-prone goto labels Signed-off-by: Erick Karanja --- drivers/staging/rtl8723bs/core/rtw_pwrctrl.c | 281 +++++++++---------- 1 file changed, 126 insertions(+), 155 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c b/drivers/staging= /rtl8723bs/core/rtw_pwrctrl.c index 74a8fcf18e84..a38db840ab47 100644 --- a/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c +++ b/drivers/staging/rtl8723bs/core/rtw_pwrctrl.c @@ -40,9 +40,8 @@ void ips_enter(struct adapter *padapter) =20 hal_btcoex_IpsNotify(padapter, pwrpriv->ips_mode_req); =20 - mutex_lock(&pwrpriv->lock); - _ips_enter(padapter); - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) + _ips_enter(padapter); } =20 int _ips_leave(struct adapter *padapter) @@ -72,9 +71,8 @@ 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); + scope_guard(mutex, &pwrpriv->lock) + ret =3D _ips_leave(padapter); =20 if (ret =3D=3D _SUCCESS) hal_btcoex_IpsNotify(padapter, IPS_NONE); @@ -144,9 +142,8 @@ void rtw_ps_processor(struct adapter *padapter) struct debug_priv *pdbgpriv =3D &psdpriv->drv_dbg; 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 @@ -348,53 +345,51 @@ void rtw_set_ps_mode(struct adapter *padapter, u8 ps_= mode, u8 smart_ps, u8 bcn_a return; =20 =20 - mutex_lock(&pwrpriv->lock); - + scoped_guard(mutex, &pwrpriv->lock) { /* if (pwrpriv->pwr_mode =3D=3D PS_MODE_ACTIVE) */ - if (ps_mode =3D=3D PS_MODE_ACTIVE) { - if (!(hal_btcoex_IsBtControlLps(padapter)) + if (ps_mode =3D=3D PS_MODE_ACTIVE) { + if (!(hal_btcoex_IsBtControlLps(padapter)) || (hal_btcoex_IsBtControlLps(padapter) && !(hal_btcoex_IsLpsOn(padapter)))) { - pwrpriv->pwr_mode =3D ps_mode; - rtw_set_rpwm(padapter, PS_STATE_S4); - - rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); - pwrpriv->fw_current_in_ps_mode =3D false; - - hal_btcoex_LpsNotify(padapter, ps_mode); - } - } else { - if ((PS_RDY_CHECK(padapter) && check_fwstate(&padapter->mlmepriv, WIFI_A= SOC_STATE)) || - ((hal_btcoex_IsBtControlLps(padapter)) && (hal_btcoex_IsLpsOn(padapt= er))) - ) { - u8 pslv; - - hal_btcoex_LpsNotify(padapter, ps_mode); - - pwrpriv->fw_current_in_ps_mode =3D true; - pwrpriv->pwr_mode =3D ps_mode; - pwrpriv->smart_ps =3D smart_ps; - pwrpriv->bcn_ant_mode =3D bcn_ant_mode; - rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); - - pslv =3D PS_STATE_S2; - if (pwrpriv->alives =3D=3D 0) - pslv =3D PS_STATE_S0; + pwrpriv->pwr_mode =3D ps_mode; + rtw_set_rpwm(padapter, PS_STATE_S4); =20 - if (!(hal_btcoex_IsBtDisabled(padapter)) && - (hal_btcoex_IsBtControlLps(padapter))) { - u8 val8; + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); + pwrpriv->fw_current_in_ps_mode =3D false; =20 - val8 =3D hal_btcoex_LpsVal(padapter); - if (val8 & BIT(4)) - pslv =3D PS_STATE_S2; + hal_btcoex_LpsNotify(padapter, ps_mode); } + } else { + if ((PS_RDY_CHECK(padapter) && check_fwstate(&padapter->mlmepriv, WIFI_= ASOC_STATE)) || + ((hal_btcoex_IsBtControlLps(padapter)) && (hal_btcoex_IsLpsOn(padapter)= )) + ) { + u8 pslv; + + hal_btcoex_LpsNotify(padapter, ps_mode); + + pwrpriv->fw_current_in_ps_mode =3D true; + pwrpriv->pwr_mode =3D ps_mode; + pwrpriv->smart_ps =3D smart_ps; + pwrpriv->bcn_ant_mode =3D bcn_ant_mode; + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); + + pslv =3D PS_STATE_S2; + if (pwrpriv->alives =3D=3D 0) + pslv =3D PS_STATE_S0; + + if (!(hal_btcoex_IsBtDisabled(padapter)) && + (hal_btcoex_IsBtControlLps(padapter))) { + u8 val8; + + val8 =3D hal_btcoex_LpsVal(padapter); + if (val8 & BIT(4)) + pslv =3D PS_STATE_S2; + } =20 - rtw_set_rpwm(padapter, pslv); + rtw_set_rpwm(padapter, pslv); + } } } - - mutex_unlock(&pwrpriv->lock); } =20 /* @@ -509,11 +504,8 @@ 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 { @@ -567,14 +559,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; @@ -599,25 +589,22 @@ void cpwm_int_hdl(struct adapter *padapter, struct re= portpwrstate_parm *preportp =20 pwrpriv =3D adapter_to_pwrctl(padapter); =20 - mutex_lock(&pwrpriv->lock); - - if (pwrpriv->rpwm < PS_STATE_S2) - goto exit; + scoped_guard(mutex, &pwrpriv->lock) { + if (pwrpriv->rpwm < PS_STATE_S2) + return; =20 - pwrpriv->cpwm =3D PS_STATE(preportpwrstate->state); - pwrpriv->cpwm_tog =3D preportpwrstate->state & PS_TOGGLE; + pwrpriv->cpwm =3D PS_STATE(preportpwrstate->state); + pwrpriv->cpwm_tog =3D preportpwrstate->state & PS_TOGGLE; =20 - if (pwrpriv->cpwm >=3D PS_STATE_S2) { - if (pwrpriv->alives & CMD_ALIVE) - complete(&padapter->cmdpriv.cmd_queue_comp); + if (pwrpriv->cpwm >=3D PS_STATE_S2) { + if (pwrpriv->alives & CMD_ALIVE) + complete(&padapter->cmdpriv.cmd_queue_comp); =20 - if (pwrpriv->alives & XMIT_ALIVE) - complete(&padapter->xmitpriv.xmit_comp); + if (pwrpriv->alives & XMIT_ALIVE) + complete(&padapter->xmitpriv.xmit_comp); + } } =20 -exit: - mutex_unlock(&pwrpriv->lock); - } =20 static void cpwm_event_callback(struct work_struct *work) @@ -642,11 +629,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; @@ -657,17 +643,14 @@ static void rpwmtimeout_workitem_callback(struct work= _struct *work) return; } =20 - mutex_lock(&pwrpriv->lock); - - if ((pwrpriv->rpwm =3D=3D pwrpriv->cpwm) || (pwrpriv->cpwm >=3D PS_STATE_= S2)) - goto exit; - - pwrpriv->brpwmtimeout =3D true; - rtw_set_rpwm(padapter, pwrpriv->rpwm); - pwrpriv->brpwmtimeout =3D false; + scoped_guard(mutex, &pwrpriv->lock) { + if ((pwrpriv->rpwm =3D=3D pwrpriv->cpwm) || (pwrpriv->cpwm >=3D PS_STATE= _S2)) + return; =20 -exit: - mutex_unlock(&pwrpriv->lock); + pwrpriv->brpwmtimeout =3D true; + rtw_set_rpwm(padapter, pwrpriv->rpwm); + pwrpriv->brpwmtimeout =3D false; + } } =20 /* @@ -719,21 +702,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; @@ -767,18 +748,16 @@ void rtw_unregister_task_alive(struct adapter *padapt= er, u32 task) pslv =3D PS_STATE_S2; } =20 - mutex_lock(&pwrctrl->lock); - - unregister_task_alive(pwrctrl, task); + scoped_guard(mutex, &pwrctrl->lock) { + unregister_task_alive(pwrctrl, task); =20 - if ((pwrctrl->pwr_mode !=3D PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps_= mode) { - if (pwrctrl->cpwm > pslv) - if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) - rtw_set_rpwm(padapter, pslv); + if ((pwrctrl->pwr_mode !=3D PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps= _mode) { + if (pwrctrl->cpwm > pslv) + if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) + rtw_set_rpwm(padapter, pslv); =20 + } } - - mutex_unlock(&pwrctrl->lock); } =20 /* @@ -804,21 +783,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); + scope_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; @@ -849,21 +826,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); - - register_task_alive(pwrctrl, CMD_ALIVE); + scoped_guard(mutex, &pwrctrl->lock) { + register_task_alive(pwrctrl, CMD_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; @@ -894,17 +869,15 @@ void rtw_unregister_tx_alive(struct adapter *padapter) pslv =3D PS_STATE_S2; } =20 - mutex_lock(&pwrctrl->lock); - - unregister_task_alive(pwrctrl, XMIT_ALIVE); + scoped_guard(mutex, &pwrctrl->lock) { + unregister_task_alive(pwrctrl, XMIT_ALIVE); =20 - if ((pwrctrl->pwr_mode !=3D PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps_= mode) { - if (pwrctrl->cpwm > pslv) - if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) - rtw_set_rpwm(padapter, pslv); + if ((pwrctrl->pwr_mode !=3D PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps= _mode) { + if (pwrctrl->cpwm > pslv) + if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) + rtw_set_rpwm(padapter, pslv); + } } - - mutex_unlock(&pwrctrl->lock); } =20 /* @@ -930,18 +903,16 @@ void rtw_unregister_cmd_alive(struct adapter *padapte= r) pslv =3D PS_STATE_S2; } =20 - mutex_lock(&pwrctrl->lock); - - unregister_task_alive(pwrctrl, CMD_ALIVE); + scoped_guard(mutex, &pwrctrl->lock) { + unregister_task_alive(pwrctrl, CMD_ALIVE); =20 - if ((pwrctrl->pwr_mode !=3D PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps_= mode) { - if (pwrctrl->cpwm > pslv) { - if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) - rtw_set_rpwm(padapter, pslv); + if ((pwrctrl->pwr_mode !=3D PS_MODE_ACTIVE) && pwrctrl->fw_current_in_ps= _mode) { + if (pwrctrl->cpwm > pslv) { + if ((pslv >=3D PS_STATE_S2) || (pwrctrl->alives =3D=3D 0)) + rtw_set_rpwm(padapter, pslv); + } } } - - mutex_unlock(&pwrctrl->lock); } =20 void rtw_init_pwrctrl_priv(struct adapter *padapter) @@ -1131,9 +1102,9 @@ 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); - pwrpriv->ps_deny |=3D BIT(reason); - mutex_unlock(&pwrpriv->lock); + scope_guard(mutex, &pwrpriv->lock) { + pwrpriv->ps_deny |=3D BIT(reason); + } } =20 /* @@ -1146,9 +1117,9 @@ 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); - pwrpriv->ps_deny &=3D ~BIT(reason); - mutex_unlock(&pwrpriv->lock); + scoped_guard(mutex, &pwrpriv->lock) { + pwrpriv->ps_deny &=3D ~BIT(reason); + } } =20 /* --=20 2.43.0