Pārlūkot izejas kodu

qcacmn: Add fix for memory leak

Added fix for two leak,
a) During wifi unload, buffer used in init need to be free during deinit.
b) Before buffer free, unmap is required for the buffer mapped to DMA.

Change-Id: I4e5a63b0c2aabb69367365e74961a63194144057
CRs-Fixed: 3157424
nobelj 3 gadi atpakaļ
vecāks
revīzija
8d6fd579fb
2 mainītis faili ar 4 papildinājumiem un 0 dzēšanām
  1. 2 0
      dp/wifi3.0/dp_rx_desc.c
  2. 2 0
      dp/wifi3.0/dp_tx.c

+ 2 - 0
dp/wifi3.0/dp_rx_desc.c

@@ -431,6 +431,7 @@ void dp_rx_desc_nbuf_free(struct dp_soc *soc,
 
 	qdf_spin_lock_bh(&rx_desc_pool->lock);
 	for (i = 0; i < rx_desc_pool->pool_size; i++) {
+		dp_rx_desc_free_dbg_info(&rx_desc_pool->array[i].rx_desc);
 		if (rx_desc_pool->array[i].rx_desc.in_use) {
 			nbuf = rx_desc_pool->array[i].rx_desc.nbuf;
 
@@ -468,6 +469,7 @@ void dp_rx_desc_frag_free(struct dp_soc *soc,
 			paddr = rx_desc_pool->array[i].rx_desc.paddr_buf_start;
 			vaddr = rx_desc_pool->array[i].rx_desc.rx_buf_start;
 
+			dp_rx_desc_free_dbg_info(&rx_desc_pool->array[i].rx_desc);
 			if (!(rx_desc_pool->array[i].rx_desc.unmapped)) {
 				qdf_mem_unmap_page(soc->osdev, paddr,
 						   rx_desc_pool->buf_size,

+ 2 - 0
dp/wifi3.0/dp_tx.c

@@ -3722,6 +3722,8 @@ void dp_tx_reinject_handler(struct dp_soc *soc,
 		qdf_spin_unlock_bh(&vdev->peer_list_lock);
 	}
 
+	qdf_nbuf_unmap_nbytes_single(vdev->osdev, nbuf, QDF_DMA_TO_DEVICE,
+				     nbuf->len);
 	qdf_nbuf_free(nbuf);
 
 	dp_tx_desc_release(tx_desc, tx_desc->pool_id);