qcacmn: Fix race while stopping the ce poll timer
Set the timer_inited flag to false bit earlier to
stop ce_poll_timeout function from processing
CRs-Fixed: 2182979
Change-Id: I91dd257c6beb21e379a4c51e651d835a35ca76ed
diff --git a/hif/src/ce/ce_main.c b/hif/src/ce/ce_main.c
index 483ddf1..713bb8c 100644
--- a/hif/src/ce/ce_main.c
+++ b/hif/src/ce/ce_main.c
@@ -1461,9 +1461,11 @@
struct hif_softc *scn = CE_state->scn;
uint32_t desc_size;
+ bool inited = CE_state->timer_inited;
CE_state->state = CE_UNUSED;
scn->ce_id_to_state[CE_id] = NULL;
-
+ /* Set the flag to false first to stop processing in ce_poll_timeout */
+ CE_state->timer_inited = false;
qdf_lro_deinit(CE_state->lro_data);
if (CE_state->src_ring) {
@@ -1503,8 +1505,7 @@
qdf_mem_free(CE_state->dest_ring);
/* epping */
- if (CE_state->timer_inited) {
- CE_state->timer_inited = false;
+ if (inited) {
qdf_timer_free(&CE_state->poll_timer);
}
}