Przeglądaj źródła

qcacld-3.0: Free nested set link state response msg buffer in PE

PE is not freeing the second level of allocated memory during MC
thread message queue flush logic and hence leaking the memory.
Free second level of allocated memory in pe_free_message such
that message posted from WMA is still freed even if MC thread is
shutdown during driver unload/SSR.

Change-Id: I6a88d3b331c29496bc7c1d9e451c97206a2b85cf
CRs-Fixed: 2192884
Rajeev Kumar 7 lat temu
rodzic
commit
69ddd852e5
1 zmienionych plików z 12 dodań i 0 usunięć
  1. 12 0
      core/mac/src/pe/lim/lim_api.c

+ 12 - 0
core/mac/src/pe/lim/lim_api.c

@@ -1024,6 +1024,17 @@ void pe_stop(tpAniSirGlobal pMac)
 	return;
 }
 
+static void pe_free_nested_messages(struct scheduler_msg *msg)
+{
+	switch (msg->type) {
+	case WMA_SET_LINK_STATE_RSP:
+		qdf_mem_free(((tpLinkStateParams) msg->bodyptr)->callbackArg);
+		break;
+	default:
+		break;
+	}
+}
+
 /** -------------------------------------------------------------
    \fn pe_free_msg
    \brief Called by CDS scheduler (function cds_sched_flush_mc_mqs)
@@ -1042,6 +1053,7 @@ void pe_free_msg(tpAniSirGlobal pMac, struct scheduler_msg *pMsg)
 				cds_pkt_return_packet((cds_pkt_t *) pMsg->
 						      bodyptr);
 			} else {
+				pe_free_nested_messages(pMsg);
 				qdf_mem_free((void *)pMsg->bodyptr);
 			}
 		}