From: Dan Carpenter <dan.carpenter@linaro.org>
To: Lin YuChen <starpt.official@gmail.com>
Cc: gregkh@linuxfoundation.org, straube.linux@gmail.com,
linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] staging: rtl8723bs: refactor rtw_aes_decrypt() to reduce nesting
Date: Thu, 19 Mar 2026 10:58:45 +0300 [thread overview]
Message-ID: <abustSUaXYf70Js1@stanley.mountain> (raw)
In-Reply-To: <20260317165149.16751-1-starpt.official@gmail.com>
What often happens is that I write a review email and then decide not
to send it. I probably would have merged your patch as-is, but since
Greg has decided not to then we as well fix this as well.
On Wed, Mar 18, 2026 at 12:51:49AM +0800, Lin YuChen wrote:
> Improve code readability by refactoring rtw_aes_decrypt() to use
> guard clauses and early exits. This reduces the maximum indentation
> level and flattens the logic flow for key assignment and decryption.
>
> Signed-off-by: Lin YuChen <starpt.official@gmail.com>
> ---
> drivers/staging/rtl8723bs/core/rtw_security.c | 91 ++++++++++---------
> 1 file changed, 46 insertions(+), 45 deletions(-)
>
> diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c
> index b489babe7432..9229e0a1c792 100644
> --- a/drivers/staging/rtl8723bs/core/rtw_security.c
> +++ b/drivers/staging/rtl8723bs/core/rtw_security.c
> @@ -1213,69 +1213,70 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
>
> pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
> /* 4 start to encrypt each fragment */
> - if (prxattrib->encrypt == _AES_) {
> - stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
> - if (stainfo) {
> - if (is_multicast_ether_addr(prxattrib->ra)) {
> - static unsigned long start;
> - static u32 no_gkey_bc_cnt;
> - static u32 no_gkey_mc_cnt;
> + if (prxattrib->encrypt != _AES_)
> + goto exit;
Just return directly. When I'm reading this patch, I have to think
"Oh, what does goto exit do?" So I scroll down to the bottom, and I
see it returns res. So then I scroll up here and I think "what is
res?" but it's not included in the email. Compare that to just doing
"return _SUCCESS;" where anyone can instantly see what it does without
scrolling up and down and changing to a different window.
>
> - if (!psecuritypriv->binstallGrpkey) {
> - res = _FAIL;
> + stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
> + if (!stainfo) {
> + res = _FAIL;
> + goto exit;
> + }
Same. Just return directly.
> + if (is_multicast_ether_addr(prxattrib->ra)) {
> + static unsigned long start;
> + static u32 no_gkey_bc_cnt;
> + static u32 no_gkey_mc_cnt;
>
> - if (start == 0)
> - start = jiffies;
> + if (!psecuritypriv->binstallGrpkey) {
> + res = _FAIL;
>
> - if (is_broadcast_mac_addr(prxattrib->ra))
> - no_gkey_bc_cnt++;
> - else
> - no_gkey_mc_cnt++;
> + if (start == 0)
> + start = jiffies;
>
> - if (jiffies_to_msecs(jiffies - start) > 1000) {
> - if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
> - netdev_dbg(padapter->pnetdev,
> - FUNC_ADPT_FMT " no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
> - FUNC_ADPT_ARG(padapter),
> - no_gkey_bc_cnt,
> - no_gkey_mc_cnt);
> - }
> - start = jiffies;
> - no_gkey_bc_cnt = 0;
> - no_gkey_mc_cnt = 0;
> - }
> -
> - goto exit;
Leave this goto exit because changing it would be an unrelated change.
The line is that adding a new goto is related because you were either
going to add a return or a goto. Changing existing code is an unrelated
change and we want to leave those lines as-is except for pulling them
in a tab.
> - }
> + if (is_broadcast_mac_addr(prxattrib->ra))
> + no_gkey_bc_cnt++;
> + else
> + no_gkey_mc_cnt++;
>
> + if (jiffies_to_msecs(jiffies - start) > 1000) {
> if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
> netdev_dbg(padapter->pnetdev,
> - FUNC_ADPT_FMT " gkey installed. no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
> - FUNC_ADPT_ARG(padapter),
> - no_gkey_bc_cnt,
> + FUNC_ADPT_FMT " no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
> + FUNC_ADPT_ARG(padapter), no_gkey_bc_cnt,
> no_gkey_mc_cnt);
> }
> - start = 0;
> + start = jiffies;
> no_gkey_bc_cnt = 0;
> no_gkey_mc_cnt = 0;
> -
> - prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey;
> - if (psecuritypriv->dot118021XGrpKeyid != prxattrib->key_index) {
> - res = _FAIL;
> - goto exit;
> - }
> - } else {
> - prwskey = &stainfo->dot118021x_UncstKey.skey[0];
> }
>
> - length = ((union recv_frame *)precvframe)->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len;
> + goto exit;
> + }
>
> - res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length);
> + if (no_gkey_bc_cnt || no_gkey_mc_cnt) {
> + netdev_dbg(padapter->pnetdev,
> + FUNC_ADPT_FMT " gkey installed. no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n",
> + FUNC_ADPT_ARG(padapter), no_gkey_bc_cnt,
> + no_gkey_mc_cnt);
> + }
> + start = 0;
> + no_gkey_bc_cnt = 0;
> + no_gkey_mc_cnt = 0;
>
> - } else {
> + prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index]
> + .skey;
> + if (psecuritypriv->dot118021XGrpKeyid != prxattrib->key_index) {
> res = _FAIL;
> + goto exit;
> }
> + } else {
> + prwskey = &stainfo->dot118021x_UncstKey.skey[0];
> }
> +
> + length = ((union recv_frame *)precvframe)->u.hdr.len -
> + prxattrib->hdrlen - prxattrib->iv_len;
Checkpatch wants you to break this line up, but it wasn't broken up in
the original code so that's an unrelated change.
regards,
dan carpenter
> +
> + res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length);
> +
> exit:
> return res;
> }
> --
> 2.34.1
prev parent reply other threads:[~2026-03-19 7:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-17 16:51 [PATCH] staging: rtl8723bs: refactor rtw_aes_decrypt() to reduce nesting Lin YuChen
2026-03-18 15:56 ` Greg KH
2026-03-18 21:51 ` [PATCH v2 0/2] staging: rtl8723bs: refactor rtw_aes_decrypt() Lin YuChen
2026-03-18 21:51 ` [PATCH v2 1/2] staging: rtl8723bs: use guard clause for AES check Lin YuChen
2026-03-19 7:59 ` Dan Carpenter
2026-03-19 12:07 ` [PATCH v3 0/2] staging: rtl8723bs: refactor rtw_aes_decrypt() Lin YuChen
2026-03-19 12:07 ` [PATCH v3 1/2] staging: rtl8723bs: use guard clause for AES check Lin YuChen
2026-03-19 12:07 ` [PATCH v3 2/2] staging: rtl8723bs: use guard clause for stainfo check Lin YuChen
2026-03-19 12:46 ` [PATCH v3 0/2] staging: rtl8723bs: refactor rtw_aes_decrypt() Dan Carpenter
2026-03-19 17:01 ` YuChen Lin
2026-03-18 21:51 ` [PATCH v2 2/2] staging: rtl8723bs: use guard clause for stainfo check Lin YuChen
2026-03-19 7:58 ` Dan Carpenter [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=abustSUaXYf70Js1@stanley.mountain \
--to=dan.carpenter@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=starpt.official@gmail.com \
--cc=straube.linux@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox