From 1c72830f3be60ab3c287f530c19fdb95d29d890e Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Fri, 10 Mar 2017 16:58:49 -0800 Subject: [PATCH] qcacmn: Unmap ce nbufs before free freeing mapped memory may lead to resource leaks. Change-Id: I75664b1a987c1339aa173672c9af670f8b3ffeb8 CRs-Fixed: 2020793 --- hif/src/ce/ce_main.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/hif/src/ce/ce_main.c b/hif/src/ce/ce_main.c index e55f8234369f..e0ef007c6543 100644 --- a/hif/src/ce/ce_main.c +++ b/hif/src/ce/ce_main.c @@ -1233,8 +1233,11 @@ void ce_t2h_msg_ce_cleanup(struct CE_handle *ce_hdl) * covered that case. This is not in performance path, * so OK to do this. */ - if (nbuf) + if (nbuf) { + qdf_nbuf_unmap_single(ce_state->scn->qdf_dev, nbuf, + QDF_DMA_FROM_DEVICE); qdf_nbuf_free(nbuf); + } } } @@ -1519,9 +1522,13 @@ hif_pci_ce_send_done(struct CE_handle *copyeng, void *ce_context, * when last fragment is complteted. */ if (transfer_context != CE_SENDLIST_ITEM_CTXT) { - if (scn->target_status == TARGET_STATUS_RESET) + if (scn->target_status == TARGET_STATUS_RESET) { + + qdf_nbuf_unmap_single(scn->qdf_dev, + transfer_context, + QDF_DMA_TO_DEVICE); qdf_nbuf_free(transfer_context); - else + } else msg_callbacks->txCompletionHandler( msg_callbacks->Context, transfer_context, transfer_id, @@ -1561,6 +1568,7 @@ static inline void hif_ce_do_recv(struct hif_msg_callbacks *msg_callbacks, } else { HIF_ERROR("%s: Invalid Rx msg buf:%p nbytes:%d", __func__, netbuf, nbytes); + qdf_nbuf_free(netbuf); } }