From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 231C33B19CA for ; Fri, 17 Apr 2026 09:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776419808; cv=none; b=beVLoFu3mBYzbC5bvF18ENgSd1jsNoQfIrTGpqJW1m2/T4VCPL9BDj1oh4C0+wTxHd1RJH7b8U3rQcAJrUGwIAKYQoZqpQ4fm7NEy0YA7e7ttjZ9AneIW4tXx0mM9RC0srDwSw/JDzBJvIRtqZerpjor1SzdeudbYTOsVvecLBQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776419808; c=relaxed/simple; bh=yr9hpcefTpgDAxjTv2InilnrEKuRm5a8VFfH95C+g20=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C+xegTi/O1WPbVuA9b8sREP26u/FgoyUT31ff40ooqhvPzxG/10H5VDvlIIDibcCG33/STih6TIR2az4e/tfU9MGls+rKAGji9A1zuNGir7aFWaHl8lsS5dm/kdIXFIS3lBr6GcdyMkxRu/SbgiU71ucHkH0UdXOGc2fduBn0xY= 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=YuZfDGyb; arc=none smtp.client-ip=209.85.128.51 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="YuZfDGyb" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-488aa77a06eso8520935e9.0 for ; Fri, 17 Apr 2026 02:56:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776419805; x=1777024605; 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=xMbR6aAXTCuyPAmN58Jxxr71oeAqRD0VzttHJfA2KIA=; b=YuZfDGyb2Yys3yG5IsZxSeumqKwQwbJtyQerDGpEzi3YTpD9IkeTgiAV3Czq6EgeN0 mwhd9xPenJonvrvgmsppa1AxLMVsB/X2u8cT0wJCuDcH2w3VTwKoU3hD9SjN/sP5bgfv ePrDHG45663N+76gMhbr0PA2Rl2kH/m1B9/O3ATAgV2wkS99vAzPkbPqWGUtzCVtrJ6W 9BgQCJDjhHTV4wtKzEEzf4oUpYL5QE2N8KBO84LYYqzAVLMl9u8Ckt9sVaK4gfKCb5kU rD6utyIkgVhu9W8Bqf/GhVyc8JrIHSGY2pjBfcbfaSl1d0/R+jWsK5cao5qQKTaojlqi TTTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776419805; x=1777024605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xMbR6aAXTCuyPAmN58Jxxr71oeAqRD0VzttHJfA2KIA=; b=SOypou+WcXaff9EN3S+pw0JkG0/uhn8xCfuu2e/L7J2NKiwJA731XFbm8ED0rI9PDp FWe+JelleeOsnqy3NO2K4pBw8q3OLlqClIZ98VR/7qt0hvkUQqJ7u/o/YtOGHYt3qIQk rliHcfZiyHnCahj5eQyXP8E198kfnsabB3hyolCwnVybKUcjRmzYrZxZD0elLQ7I1gyV 2X2THkVi3sOYkS7+Zg6LVJmlh3/gbuEQJn08hnkSyDAFFNlZxpX1VPOXT4SOhZm2J/LZ w1OYghwNYKyFISFdrlKIA3mEfLDCgJ31sEfLl4HUHbq5zYD5Wt92NTh+fgb3Dq2Et3DQ jePw== X-Forwarded-Encrypted: i=1; AFNElJ+pxFOW+wqQk7ibYwJNcb+wxwcZF/I07ZCo+Hy92woQeBngWJNAS/FPSVBIKB0w6wWMNupyxzHsGGGu3P4=@vger.kernel.org X-Gm-Message-State: AOJu0YyEeuHE8gwHlW/PJH5QUNZgmPM/VpjOEdOf2VFWORMriqVPKHt8 jFA98U9BDqG+ai1/9fCm3VIyiJ0E3PaEHZQySLSawj2IK9QGmyQICeE9 X-Gm-Gg: AeBDietG4CTvJHetectVHNMoZymIxwtla7z1rCjWJz9ujeMzwskso/X0FBZlVUtdVa3 22Sarw2kXSPVEQbDGpI2OfzdsMnxruYBztjTlxC/sPE3XmtrN4pdmoMkZZz5yo8PmwkmQ3ZAq4q q1azLyp4+88cql1JDX7JtKxtCAj4xSJoQQD/XICDxNdLCRB6IYqdfzWUhOk8A8YJfAVhXqkFebC 0sJPrl6eeEP1KyvhF83Sq8BNsEJgkOXsgGeQsMwQzq5DsPfQ9ltOQTg36BRQnq7ttMN97RaNgvq KwQHJdT1/Y3OrSNUOgASDk8DI2AHQfCPLeBbKtQv3zvDEGNDFLkQwJEslwZARSKo8HFeKt3Obhi +wH075OwZNmvCufnVFlAGZOeGQcHXkv/ExnUoQkJ2Z7v7ewNKjX3Vuqd/cO3vQe1Qm8ZkPZ3sp5 MW7HYd9PAL1H/TktuU4g1KET+Os8/9 X-Received: by 2002:a05:6000:22c5:b0:43d:6fb7:fedb with SMTP id ffacd0b85a97d-43fe3e1645emr3021656f8f.36.1776419805267; Fri, 17 Apr 2026 02:56:45 -0700 (PDT) Received: from moxi ([178.134.243.189]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e3a166sm3454917f8f.19.2026.04.17.02.56.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Apr 2026 02:56:44 -0700 (PDT) From: Maksym Pikhotskyi To: gregkh@linuxfoundation.org, error27@gmail.com, ethantidmore06@gmail.com, starpt.official@gmail.com, straube.linux@gmail.com, sameekshasankpal@gmail.com, arthur.stupa@gmail.com, luka.gejak@linux.dev Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Maksym Pikhotskyi Subject: [PATCH v3 2/2] staging: rtl8723bs: reduce nesting in rtw_security.c Date: Fri, 17 Apr 2026 13:54:52 +0400 Message-ID: <20260417095452.23440-2-mpikhotskyi@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260417095452.23440-1-mpikhotskyi@gmail.com> References: <20260417095452.23440-1-mpikhotskyi@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Improve readability of functions: rtw_tkip_encrypt, rtw_tkip_decrypt, rtw_aes_encrypt in rtw_security.c by adding early returns for the encryption type check and the stainfo null check. Signed-off-by: Maksym Pikhotskyi --- v2: rebase on staging-next. split into a series of patches. v3: make subject line and commit message more descriptive. --- drivers/staging/rtl8723bs/core/rtw_security.c | 205 +++++++++--------- 1 file changed, 102 insertions(+), 103 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_security.c b/drivers/staging/rtl8723bs/core/rtw_security.c index f467cb5b1dca..2a5a4c0de9b1 100644 --- a/drivers/staging/rtl8723bs/core/rtw_security.c +++ b/drivers/staging/rtl8723bs/core/rtw_security.c @@ -449,47 +449,45 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe) pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset; /* 4 start to encrypt each fragment */ - if (pattrib->encrypt == _TKIP_) { + if (pattrib->encrypt != _TKIP_) + return _SUCCESS; - { - if (is_multicast_ether_addr(pattrib->ra)) - prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; - else - prwskey = pattrib->dot118021x_UncstKey.skey; + if (is_multicast_ether_addr(pattrib->ra)) + prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; + else + prwskey = pattrib->dot118021x_UncstKey.skey; - for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { - iv = pframe + pattrib->hdrlen; - payload = pframe + pattrib->iv_len + pattrib->hdrlen; + for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { + iv = pframe + pattrib->hdrlen; + payload = pframe + pattrib->iv_len + pattrib->hdrlen; - GET_TKIP_PN(iv, dot11txpn); + GET_TKIP_PN(iv, dot11txpn); - pnl = (u16)(dot11txpn.val); - pnh = (u32)(dot11txpn.val >> 16); + pnl = (u16)(dot11txpn.val); + pnh = (u32)(dot11txpn.val >> 16); - phase1((u16 *)&ttkey[0], prwskey, &pattrib->ta[0], pnh); + phase1((u16 *)&ttkey[0], prwskey, &pattrib->ta[0], pnh); - phase2(&rc4key[0], prwskey, (u16 *)&ttkey[0], pnl); + phase2(&rc4key[0], prwskey, (u16 *)&ttkey[0], pnl); - if ((curfragnum + 1) == pattrib->nr_frags) { /* 4 the last fragment */ - length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; - crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length)); + if ((curfragnum + 1) == pattrib->nr_frags) { /* 4 the last fragment */ + length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; + crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length)); - arc4_setkey(ctx, rc4key, 16); - arc4_crypt(ctx, payload, payload, length); - arc4_crypt(ctx, payload + length, crc.f1, 4); + arc4_setkey(ctx, rc4key, 16); + arc4_crypt(ctx, payload, payload, length); + arc4_crypt(ctx, payload + length, crc.f1, 4); - } else { - length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; - crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length)); + } else { + length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; + crc.f0 = cpu_to_le32(~crc32_le(~0, payload, length)); - arc4_setkey(ctx, rc4key, 16); - arc4_crypt(ctx, payload, payload, length); - arc4_crypt(ctx, payload + length, crc.f1, 4); + arc4_setkey(ctx, rc4key, 16); + arc4_crypt(ctx, payload, payload, length); + arc4_crypt(ctx, payload + length, crc.f1, 4); - pframe += pxmitpriv->frag_len; - pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4); - } - } + pframe += pxmitpriv->frag_len; + pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4); } } return res; @@ -517,82 +515,82 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe) pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data; /* 4 start to decrypt recvframe */ - if (prxattrib->encrypt == _TKIP_) { - 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 (!psecuritypriv->binstallGrpkey) { - res = _FAIL; - - if (start == 0) - start = jiffies; - - if (is_broadcast_ether_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 " 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; - } + if (prxattrib->encrypt != _TKIP_) + return _SUCCESS; + stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]); + if (!stainfo) + return _FAIL; + + if (is_multicast_ether_addr(prxattrib->ra)) { + static unsigned long start; + static u32 no_gkey_bc_cnt; + static u32 no_gkey_mc_cnt; + + if (!psecuritypriv->binstallGrpkey) { + res = _FAIL; + + if (start == 0) + start = jiffies; + + if (is_broadcast_ether_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_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; - } else { - prwskey = &stainfo->dot118021x_UncstKey.skey[0]; } + goto exit; + } - iv = pframe + prxattrib->hdrlen; - payload = pframe + prxattrib->iv_len + prxattrib->hdrlen; - length = ((union recv_frame *)precvframe)->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len; + 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; - GET_TKIP_PN(iv, dot11txpn); + prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey; + } else { + prwskey = &stainfo->dot118021x_UncstKey.skey[0]; + } - pnl = (u16)(dot11txpn.val); - pnh = (u32)(dot11txpn.val >> 16); + iv = pframe + prxattrib->hdrlen; + payload = pframe + prxattrib->iv_len + prxattrib->hdrlen; + length = ((union recv_frame *)precvframe)->u.hdr.len - prxattrib->hdrlen - prxattrib->iv_len; - phase1((u16 *)&ttkey[0], prwskey, &prxattrib->ta[0], pnh); - phase2(&rc4key[0], prwskey, (unsigned short *)&ttkey[0], pnl); + GET_TKIP_PN(iv, dot11txpn); - /* 4 decrypt payload include icv */ + pnl = (u16)(dot11txpn.val); + pnh = (u32)(dot11txpn.val >> 16); - arc4_setkey(ctx, rc4key, 16); - arc4_crypt(ctx, payload, payload, length); + phase1((u16 *)&ttkey[0], prwskey, &prxattrib->ta[0], pnh); + phase2(&rc4key[0], prwskey, (unsigned short *)&ttkey[0], pnl); - *((u32 *)crc) = ~crc32_le(~0, payload, length - 4); + /* 4 decrypt payload include icv */ - if (crc[3] != payload[length - 1] || crc[2] != payload[length - 2] || - crc[1] != payload[length - 3] || crc[0] != payload[length - 4]) - res = _FAIL; - } else { - res = _FAIL; - } - } + arc4_setkey(ctx, rc4key, 16); + arc4_crypt(ctx, payload, payload, length); + + *((u32 *)crc) = ~crc32_le(~0, payload, length - 4); + + if (crc[3] != payload[length - 1] || crc[2] != payload[length - 2] || + crc[1] != payload[length - 3] || crc[0] != payload[length - 4]) + res = _FAIL; exit: return res; } @@ -965,24 +963,25 @@ u32 rtw_aes_encrypt(struct adapter *padapter, u8 *pxmitframe) pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset; /* 4 start to encrypt each fragment */ - if (pattrib->encrypt == _AES_) { - if (is_multicast_ether_addr(pattrib->ra)) - prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; - else - prwskey = pattrib->dot118021x_UncstKey.skey; + if (pattrib->encrypt != _AES_) + return _SUCCESS; - for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { - if ((curfragnum + 1) == pattrib->nr_frags) { /* 4 the last fragment */ - length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; + if (is_multicast_ether_addr(pattrib->ra)) + prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; + else + prwskey = pattrib->dot118021x_UncstKey.skey; - aes_cipher(prwskey, pattrib->hdrlen, pframe, length); - } else { - length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; + for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { + if ((curfragnum + 1) == pattrib->nr_frags) { /* 4 the last fragment */ + length = pattrib->last_txcmdsz - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; - aes_cipher(prwskey, pattrib->hdrlen, pframe, length); - pframe += pxmitpriv->frag_len; - pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4); - } + aes_cipher(prwskey, pattrib->hdrlen, pframe, length); + } else { + length = pxmitpriv->frag_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; + + aes_cipher(prwskey, pattrib->hdrlen, pframe, length); + pframe += pxmitpriv->frag_len; + pframe = (u8 *)round_up((SIZE_PTR)(pframe), 4); } } return res; -- 2.51.0