Forráskód Böngészése

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 éve
szülő
commit
8d6fd579fb
2 módosított fájl, 4 hozzáadás és 0 törlés
  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);