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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.