Переглянути джерело

qcacld-3.0: Fix memory allocation for zero channel list

Current driver try allocate memory when number of channel are passed
as zero which will cause memory allocation failure.

As part of the fix, when number of channels comes as zero then driver
shouldn't allocate memory and let the firmware take care of it.

CRs-Fixed: 1007196
Change-Id: I51d8a6decbe4c21265e88624e490446a48ea4857
Krunal Soni 9 роки тому
батько
коміт
eda6d7ec50
1 змінених файлів з 7 додано та 7 видалено
  1. 7 7
      core/wma/src/wma_scan_roam.c

+ 7 - 7
core/wma/src/wma_scan_roam.c

@@ -483,14 +483,14 @@ QDF_STATUS wma_start_scan(tp_wma_handle wma_handle,
 	struct scan_start_params cmd = {0};
 	struct scan_start_params cmd = {0};
 	tSirScanOffloadEvent *scan_event;
 	tSirScanOffloadEvent *scan_event;
 
 
-	cmd.chan_list = qdf_mem_malloc(sizeof(uint32_t) *
-			   scan_req->channelList.numChannels);
-	if (NULL == cmd.chan_list) {
-		qdf_status = QDF_STATUS_E_NOMEM;
-		goto error;
+	if (scan_req->channelList.numChannels > 0) {
+		cmd.chan_list = qdf_mem_malloc(sizeof(uint32_t) *
+				scan_req->channelList.numChannels);
+		if (NULL == cmd.chan_list) {
+			qdf_status = QDF_STATUS_E_NOMEM;
+			goto error;
+		}
 	}
 	}
-	qdf_mem_zero((void *)cmd.chan_list, sizeof(uint32_t) *
-		scan_req->channelList.numChannels);
 	if (scan_req->sessionId > wma_handle->max_bssid) {
 	if (scan_req->sessionId > wma_handle->max_bssid) {
 		WMA_LOGE("%s: Invalid vdev_id %d, msg_type : 0x%x", __func__,
 		WMA_LOGE("%s: Invalid vdev_id %d, msg_type : 0x%x", __func__,
 			 scan_req->sessionId, msg_type);
 			 scan_req->sessionId, msg_type);