Pārlūkot izejas kodu

qcacld-3.0: Flush the recovery work as a part of idle shutdown

During idle shutdown(T1 Thread), Driver sends the PDEV
suspend command to FW. If ACK is not received, driver initiates
the work for self recovery. As a part of self recovery(T2 thread)
driver allocates  the memory and sends the force fw hang cmd and
wait for the event.
T1 thread continues and stop all the modules and check for mem leaks.
Since t2 thread is not completed and free the memory, the crash
happens as a part of mem leak check.

Fix this race condition by cancelling and flushing the recovery work
in cds close.

CRs-Fixed: 2730021
Change-Id: Ieffff621e0838b341531c5b7feda1277ee4f70fd
Sachin Ahuja 4 gadi atpakaļ
vecāks
revīzija
e03b460045
1 mainītis faili ar 2 papildinājumiem un 0 dzēšanām
  1. 2 0
      core/cds/src/cds_api.c

+ 2 - 0
core/cds/src/cds_api.c

@@ -1306,6 +1306,8 @@ QDF_STATUS cds_close(struct wlan_objmgr_psoc *psoc)
 
 	dispatcher_psoc_close(psoc);
 
+	qdf_flush_work(&gp_cds_context->cds_recovery_work);
+
 	qdf_status = wma_wmi_work_close();
 	if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
 		cds_err("Failed to close wma_wmi_work");