Linux kernel staging patches
 help / color / mirror / Atom feed
* [PATCH] staging: rtl8723bs: avoid duplicate size computation in rtw_spt_band_alloc
@ 2026-06-21 13:33 Serhat Kumral
  2026-06-22  9:20 ` Dan Carpenter
  0 siblings, 1 reply; 2+ messages in thread
From: Serhat Kumral @ 2026-06-21 13:33 UTC (permalink / raw)
  To: gregkh; +Cc: linux-staging, linux-kernel, Serhat Kumral

Introduce a local variable to store the channel array size and reuse it
for both the allocation and the bitrates pointer offset, replacing a
redundant open-coded multiplication with the same array_size() result.

Resolves the Coccinelle warning:
WARNING: array_size is already used (line 124) to compute the same size

Signed-off-by: Serhat Kumral <serhatkumral1@gmail.com>
---
 drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
index 1484336d7..2e65788ee 100644
--- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
@@ -111,7 +111,7 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
 {
 	struct ieee80211_supported_band *spt_band = NULL;
 	int n_channels, n_bitrates;
-	size_t alloc_sz;
+	size_t alloc_sz, channels_sz;
 
 	if (band == NL80211_BAND_2GHZ) {
 		n_channels = RTW_2G_CHANNELS_NUM;
@@ -120,15 +120,16 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
 		goto exit;
 	}
 
+	channels_sz = array_size(n_channels, sizeof(struct ieee80211_channel));
 	alloc_sz = sizeof(*spt_band);
-	alloc_sz = size_add(alloc_sz, array_size(n_channels, sizeof(struct ieee80211_channel)));
+	alloc_sz = size_add(alloc_sz, channels_sz);
 	alloc_sz = size_add(alloc_sz, array_size(n_bitrates, sizeof(struct ieee80211_rate)));
 	spt_band = kzalloc(alloc_sz, GFP_KERNEL);
 	if (!spt_band)
 		goto exit;
 
 	spt_band->channels = (struct ieee80211_channel *)(((u8 *)spt_band) + sizeof(struct ieee80211_supported_band));
-	spt_band->bitrates = (struct ieee80211_rate *)(((u8 *)spt_band->channels) + sizeof(struct ieee80211_channel) * n_channels);
+	spt_band->bitrates = (struct ieee80211_rate *)(((u8 *)spt_band->channels) + channels_sz);
 	spt_band->band = band;
 	spt_band->n_channels = n_channels;
 	spt_band->n_bitrates = n_bitrates;
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] staging: rtl8723bs: avoid duplicate size computation in rtw_spt_band_alloc
  2026-06-21 13:33 [PATCH] staging: rtl8723bs: avoid duplicate size computation in rtw_spt_band_alloc Serhat Kumral
@ 2026-06-22  9:20 ` Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2026-06-22  9:20 UTC (permalink / raw)
  To: Serhat Kumral; +Cc: gregkh, linux-staging, linux-kernel

On Sun, Jun 21, 2026 at 04:33:01PM +0300, Serhat Kumral wrote:
> Introduce a local variable to store the channel array size and reuse it
> for both the allocation and the bitrates pointer offset, replacing a
> redundant open-coded multiplication with the same array_size() result.
> 
> Resolves the Coccinelle warning:
> WARNING: array_size is already used (line 124) to compute the same size
> 
> Signed-off-by: Serhat Kumral <serhatkumral1@gmail.com>
> ---
>  drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
> index 1484336d7..2e65788ee 100644
> --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
> +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c
> @@ -111,7 +111,7 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
>  {
>  	struct ieee80211_supported_band *spt_band = NULL;
>  	int n_channels, n_bitrates;
> -	size_t alloc_sz;
> +	size_t alloc_sz, channels_sz;
>  
>  	if (band == NL80211_BAND_2GHZ) {
>  		n_channels = RTW_2G_CHANNELS_NUM;
> @@ -120,15 +120,16 @@ static struct ieee80211_supported_band *rtw_spt_band_alloc(
>  		goto exit;
>  	}
>  
> +	channels_sz = array_size(n_channels, sizeof(struct ieee80211_channel));
>  	alloc_sz = sizeof(*spt_band);
> -	alloc_sz = size_add(alloc_sz, array_size(n_channels, sizeof(struct ieee80211_channel)));
> +	alloc_sz = size_add(alloc_sz, channels_sz);
>  	alloc_sz = size_add(alloc_sz, array_size(n_bitrates, sizeof(struct ieee80211_rate)));
>  	spt_band = kzalloc(alloc_sz, GFP_KERNEL);

This is still a mess.  First of all these size values are constant so
the layers of indirection are unnecessary.  Pretending they are variable
makes code auditors have to check for integer overflows so it wastes
valuable time and makes the whole kernel less secure.

	channels_sz = array_size(RTW_2G_CHANNELS_NUM, sizeof(struct ieee80211_channel));
	bitrate_size = array_size(RTW_G_RATES_NUM, sizeof(struct ieee80211_rate));

	spt_band = kzalloc(sizeof(*spt_band) + channels_sz + bitrate_size, GFP_KERNEL);

	spt_band->channels = (void *)spt_band + sizeof(*spt_band);
	spt_band->bitrates = (void *)spt_band + sizeof(*spt_band) + channels_sz;

regards,
dan carpenter




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-06-22  9:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-21 13:33 [PATCH] staging: rtl8723bs: avoid duplicate size computation in rtw_spt_band_alloc Serhat Kumral
2026-06-22  9:20 ` Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox