diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index 6082f2d4de32..0635e45303c5 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -929,15 +929,13 @@ static void wma_data_tx_ack_work_handler(void *ack_work) tp_wma_handle wma_handle; wma_tx_ota_comp_callback ack_cb; - if (cds_is_load_or_unload_in_progress()) { - wma_err("Driver load/unload in progress"); - qdf_mem_free(ack_work); - return; - } - work = (struct wma_tx_ack_work_ctx *)ack_work; wma_handle = work->wma_handle; + if (!wma_handle || cds_is_load_or_unload_in_progress()) { + wma_err("Driver load/unload in progress"); + goto end; + } ack_cb = wma_handle->umac_data_ota_ack_cb; if (work->status) @@ -951,10 +949,13 @@ static void wma_data_tx_ack_work_handler(void *ack_work) else wma_err("Data Tx Ack Cb is NULL"); - wma_handle->umac_data_ota_ack_cb = NULL; - wma_handle->last_umac_data_nbuf = NULL; +end: qdf_mem_free(work); - wma_handle->ack_work_ctx = NULL; + if (wma_handle) { + wma_handle->umac_data_ota_ack_cb = NULL; + wma_handle->last_umac_data_nbuf = NULL; + wma_handle->ack_work_ctx = NULL; + } } /**