Преглед на файлове

qcacld-3.0: free fisa rx element from fst_update_list in deinit

During dp_rx_fst_cmem_deinit, free dp_fisa_rx_fst_update_elem
from the fst_update_list.

Change-Id: Ie3445bc4b06cba3e72cf44fe09417b9528115c1e
CRs-Fixed: 2833805
Vevek Venkatesan преди 4 години
родител
ревизия
0f457cd140
променени са 1 файла, в които са добавени 12 реда и са изтрити 1 реда
  1. 12 1
      core/dp/txrx3.0/dp_rx_fst.c

+ 12 - 1
core/dp/txrx3.0/dp_rx_fst.c

@@ -133,13 +133,24 @@ static void dp_fisa_fse_cache_flush_timer(void *arg)
  */
 static void dp_rx_fst_cmem_deinit(struct dp_rx_fst *fst)
 {
+	struct dp_fisa_rx_fst_update_elem *elem;
+	qdf_list_node_t *node;
 	int i;
 
 	qdf_cancel_work(&fst->fst_update_work);
 	qdf_flush_work(&fst->fst_update_work);
 	qdf_flush_workqueue(0, fst->fst_update_wq);
-
 	qdf_destroy_workqueue(0, fst->fst_update_wq);
+
+	qdf_spin_lock_bh(&fst->dp_rx_fst_lock);
+	while (qdf_list_peek_front(&fst->fst_update_list, &node) ==
+	       QDF_STATUS_SUCCESS) {
+		elem = (struct dp_fisa_rx_fst_update_elem *)node;
+		qdf_list_remove_front(&fst->fst_update_list, &node);
+		qdf_mem_free(elem);
+	}
+	qdf_spin_unlock_bh(&fst->dp_rx_fst_lock);
+
 	qdf_list_destroy(&fst->fst_update_list);
 	qdf_event_destroy(&fst->cmem_resp_event);