From 40f433888d6db39d175cdb7d0e14913662542cef Mon Sep 17 00:00:00 2001 From: Will Huang Date: Wed, 9 Jun 2021 15:21:29 +0800 Subject: [PATCH] qcacld-3.0: Fix unsafe channel buffer size not align qdf_freq_t is by default defined as uint32_t, but hdd_ctx-> unsafe_channel_list is defined as uin16_t because cnss interface is defined as uint16_t, so can't pass hdd_ctx->unsafe_channel_list to ucfg_policy_mgr_init_chan_avoidance() which expect qdf_freq_t list. Convert hdd_ctx->unsafe_channel_list to qdf_freq_t list and pass it to ucfg_policy_mgr_init_chan_avoidance(). Change-Id: I0207827e3cbaa82526e97d2826d90d396148c84a CRs-Fixed: 2964178 --- core/hdd/src/wlan_hdd_main.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 9d179e904432..467ee065e202 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -11928,6 +11928,7 @@ static void hdd_init_channel_avoidance(struct hdd_context *hdd_ctx) { uint16_t unsafe_channel_count; int index; + qdf_freq_t *unsafe_freq_list; pld_get_wlan_unsafe_channel(hdd_ctx->parent_dev, hdd_ctx->unsafe_channel_list, @@ -11940,16 +11941,25 @@ static void hdd_init_channel_avoidance(struct hdd_context *hdd_ctx) unsafe_channel_count = QDF_MIN((uint16_t)hdd_ctx->unsafe_channel_count, (uint16_t)NUM_CHANNELS); + unsafe_freq_list = qdf_mem_malloc( + unsafe_channel_count * sizeof(*unsafe_freq_list)); + + if (!unsafe_freq_list) + return; + for (index = 0; index < unsafe_channel_count; index++) { hdd_debug("channel frequency %d is not safe", hdd_ctx->unsafe_channel_list[index]); - + unsafe_freq_list[index] = + (qdf_freq_t)hdd_ctx->unsafe_channel_list[index]; } ucfg_policy_mgr_init_chan_avoidance( hdd_ctx->psoc, - (qdf_freq_t *)hdd_ctx->unsafe_channel_list, - hdd_ctx->unsafe_channel_count); + unsafe_freq_list, + unsafe_channel_count); + + qdf_mem_free(unsafe_freq_list); } static void hdd_lte_coex_restart_sap(struct hdd_adapter *adapter,