hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_escan.c
....@@ -886,8 +886,7 @@
886886 u8 *scan_params = NULL, *params = NULL;
887887 s32 params_size;
888888 u32 n_channels = 0;
889
- wl_uint32_list_t *list;
890
- u8 valid_chan_list[sizeof(u32)*(MAX_CTRL_CHANSPECS + 1)];
889
+ wl_uint32_list_t *list = NULL;
891890
892891 mutex_lock(&escan->usr_sync);
893892 if (escan->escan_state == ESCAN_STATE_DOWN) {
....@@ -920,8 +919,12 @@
920919 }
921920
922921 /* if scan request is not empty parse scan request paramters */
923
- memset(valid_chan_list, 0, sizeof(valid_chan_list));
924
- list = (wl_uint32_list_t *)(void *) valid_chan_list;
922
+ list = kzalloc(sizeof(u32)*(MAX_CTRL_CHANSPECS + 1), GFP_KERNEL);
923
+ if (list == NULL) {
924
+ ESCAN_ERROR(dev->name, "kzalloc failed\n");
925
+ err = -ENOMEM;
926
+ goto exit;
927
+ }
925928
926929 if (scan_info->channels.count) {
927930 memcpy(list, &scan_info->channels, sizeof(wl_channel_list_t));
....@@ -984,6 +987,8 @@
984987 }
985988 kfree(params);
986989 exit:
990
+ if (list)
991
+ kfree(list);
987992 if (unlikely(err)) {
988993 wl_escan_reset(escan);
989994 }