From f35a327e90a44ab005d9592b81a1e94f07999da7 Mon Sep 17 00:00:00 2001 From: Serhat Kumral Date: Mon, 22 Jun 2026 19:09:47 +0300 Subject: [PATCH] staging: rtl8723bs: simplify rtw_spt_band_alloc The function only supports NL80211_BAND_2GHZ and falls through to exit for any other band. Replace the n_channels and n_bitrates local variables with the compile-time constants RTW_2G_CHANNELS_NUM and RTW_G_RATES_NUM directly. Use simple addition in kzalloc() instead of chained size_add() calls, since the sizes are derived from compile-time constants and cannot overflow. Replace the intermediate alloc_sz variable accordingly. Remove the redundant second band check before the init calls, as the early exit at the top of the function guarantees that only the 2GHz case can reach that point. No functional change intended. Suggested-by: Dan Carpenter Signed-off-by: Serhat Kumral Reviewed-by: Dan Carpenter Link: https://patch.msgid.link/20260622160947.7970-1-serhatkumral1@gmail.com Signed-off-by: Greg Kroah-Hartman --- .../staging/rtl8723bs/os_dep/ioctl_cfg80211.c | 31 +++++++------------ 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c index f08b570038e2..47506fb93a85 100644 --- a/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c @@ -110,33 +110,26 @@ 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 channels_sz, bitrate_size; - if (band == NL80211_BAND_2GHZ) { - n_channels = RTW_2G_CHANNELS_NUM; - n_bitrates = RTW_G_RATES_NUM; - } else { + if (band != NL80211_BAND_2GHZ) goto exit; - } - 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, array_size(n_bitrates, sizeof(struct ieee80211_rate))); - spt_band = kzalloc(alloc_sz, GFP_KERNEL); + 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); 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->channels = (void *)spt_band + sizeof(*spt_band); + spt_band->bitrates = (void *)spt_band + sizeof(*spt_band) + channels_sz; spt_band->band = band; - spt_band->n_channels = n_channels; - spt_band->n_bitrates = n_bitrates; + spt_band->n_channels = RTW_2G_CHANNELS_NUM; + spt_band->n_bitrates = RTW_G_RATES_NUM; - if (band == NL80211_BAND_2GHZ) { - rtw_2g_channels_init(spt_band->channels); - rtw_2g_rates_init(spt_band->bitrates); - } + rtw_2g_channels_init(spt_band->channels); + rtw_2g_rates_init(spt_band->bitrates); /* spt_band.ht_cap */