diff mbox series

wcn36xx: Fix max channels retrieval

Message ID 1638435732-14657-1-git-send-email-loic.poulain@linaro.org
State New
Headers show
Series wcn36xx: Fix max channels retrieval | expand

Commit Message

Loic Poulain Dec. 2, 2021, 9:02 a.m. UTC
Kernel test robot reported:drivers/net/wireless/ath/wcn36xx/smd.c:943:33:
   sparse: sparse: cast truncates bits from constant value (780 becomes 80)

The 'channels' field is not a simple u8 array but an array of
channel_params. Using sizeof for retrieving the max number of
channels is then wrong.

In practice, it was not an issue, because the sizeof returned
value is 780, which is truncated in min_t (u8) to 80, which is
the value we expect...

Fix that properly using ARRAY_SIZE instead of sizeof.

Fixes: d707f812bb05 ("wcn36xx: Channel list update before hardware scan")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
---
 drivers/net/wireless/ath/wcn36xx/smd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kalle Valo Dec. 8, 2021, 8:34 a.m. UTC | #1
Loic Poulain <loic.poulain@linaro.org> wrote:

> Kernel test robot reported:drivers/net/wireless/ath/wcn36xx/smd.c:943:33:
>    sparse: sparse: cast truncates bits from constant value (780 becomes 80)
> 
> The 'channels' field is not a simple u8 array but an array of
> channel_params. Using sizeof for retrieving the max number of
> channels is then wrong.
> 
> In practice, it was not an issue, because the sizeof returned
> value is 780, which is truncated in min_t (u8) to 80, which is
> the value we expect...
> 
> Fix that properly using ARRAY_SIZE instead of sizeof.
> 
> Fixes: d707f812bb05 ("wcn36xx: Channel list update before hardware scan")
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

09cab4308bf9 wcn36xx: Fix max channels retrieval
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
index ed45e2cf..900e5a5 100644
--- a/drivers/net/wireless/ath/wcn36xx/smd.c
+++ b/drivers/net/wireless/ath/wcn36xx/smd.c
@@ -940,7 +940,7 @@  int wcn36xx_smd_update_channel_list(struct wcn36xx *wcn, struct cfg80211_scan_re
 
 	INIT_HAL_MSG((*msg_body), WCN36XX_HAL_UPDATE_CHANNEL_LIST_REQ);
 
-	msg_body->num_channel = min_t(u8, req->n_channels, sizeof(msg_body->channels));
+	msg_body->num_channel = min_t(u8, req->n_channels, ARRAY_SIZE(msg_body->channels));
 	for (i = 0; i < msg_body->num_channel; i++) {
 		struct wcn36xx_hal_channel_param *param = &msg_body->channels[i];
 		u32 min_power = WCN36XX_HAL_DEFAULT_MIN_POWER;