From b6084f1ab82e3bcad4a69a78ab03e603f2e1d158 Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Tue, 30 May 2017 19:24:07 -0700 Subject: [PATCH] qcacld-3.0: Free hif recv buffers in cds_flush Hif recv buffers with fw events were being leaked in the cds_sched_flush_mc_mqs opperation. Change-Id: Idc7752740eb955b61876bd235e5e9516f98af4bf CRs-Fixed: 2004858 --- core/wma/src/wma_main.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index 2e6233f7b172..fa13b518f17f 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -1589,6 +1589,21 @@ QDF_STATUS wma_process_hal_pwr_dbg_cmd(WMA_HANDLE handle, return status; } +static void wma_discard_fw_event(struct scheduler_msg *msg) +{ + switch (msg->type) { + case WMA_PROCESS_FW_EVENT: + qdf_nbuf_free(((wma_process_fw_event_params *)msg->bodyptr) + ->evt_buf); + break; + } + if (msg->bodyptr) + qdf_mem_free(msg->bodyptr); + msg->bodyptr = NULL; + msg->bodyval = 0; + msg->type = 0; +} + /** * wma_process_fw_event_handler() - common event handler to serialize * event processing through mc_thread @@ -1616,6 +1631,7 @@ static int wma_process_fw_event_mc_thread_ctx(void *ctx, void *ev) cds_msg.type = WMA_PROCESS_FW_EVENT; cds_msg.bodyptr = params_buf; cds_msg.bodyval = 0; + cds_msg.flush_callback = wma_discard_fw_event; if (QDF_STATUS_SUCCESS != scheduler_post_msg(QDF_MODULE_ID_WMA, &cds_msg)) {