Ver código fonte

qcacld-3.0: Avoid memory leak when adding a TX pattern

In wma_process_add_periodic_tx_ptrn_ind() the buffer allocated for the
WMI parameter will be leaked if wma_find_vdev_by_addr() fails. To
avoid this, reorder the operations so that the buffer is not allocated
unless wma_find_vdev_by_addr() is successful.

Change-Id: Idbd180dcc1bcae5b71f6a56adcfa3b4a7e2595da
CRs-Fixed: 2371905
Jeff Johnson 6 anos atrás
pai
commit
0536c17571
1 arquivos alterados com 4 adições e 4 exclusões
  1. 4 4
      core/wma/src/wma_features.c

+ 4 - 4
core/wma/src/wma_features.c

@@ -3535,10 +3535,6 @@ QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
 		return QDF_STATUS_E_INVAL;
 	}
 
-	params_ptr = qdf_mem_malloc(sizeof(*params_ptr));
-	if (!params_ptr)
-		return QDF_STATUS_E_NOMEM;
-
 	if (!wma_find_vdev_by_addr(wma_handle,
 				   pAddPeriodicTxPtrnParams->mac_address.bytes,
 				   &vdev_id)) {
@@ -3547,6 +3543,10 @@ QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
 		return QDF_STATUS_E_INVAL;
 	}
 
+	params_ptr = qdf_mem_malloc(sizeof(*params_ptr));
+	if (!params_ptr)
+		return QDF_STATUS_E_NOMEM;
+
 	params_ptr->ucPtrnId = pAddPeriodicTxPtrnParams->ucPtrnId;
 	params_ptr->ucPtrnSize = pAddPeriodicTxPtrnParams->ucPtrnSize;
 	params_ptr->usPtrnIntervalMs =