qcacld-3.0: Fix mem and timer leak when WMA_DELETE_BSS_REQ timeout

In wma_vdev_resp_timer(), while handling WMA_DELETE_BSS_REQ if
wma_crash_on_fw_timeout() is true, SSR is triggered, but timer
event_timeout isn't destroyed, wma_target_req, and user_data
isn't freed, result in timer and mem leak.

Change-Id: Ic47af43de671d195c6addd0360b96305af15d9bf
CRs-Fixed: 2337211
This commit is contained in:
Jianmin Zhu 2018-10-26 14:48:35 +08:00 • committed by nshrivas
commit 7a03c02b36

View file

@ -3603,18 +3603,23 @@ void wma_vdev_resp_timer(void *data)
if (wma_crash_on_fw_timeout(wma->fw_timeout_crash) == true) {
wma_trigger_recovery_assert_on_fw_timeout(
WMA_DELETE_BSS_REQ);
return;
wma_cleanup_target_req_param(tgt_req);
goto free_tgt_req;
}
status = wma_remove_bss_peer(wma, pdev, tgt_req,
tgt_req->vdev_id, params);
if (status != 0)
if (status != 0) {
wma_cleanup_target_req_param(tgt_req);
goto free_tgt_req;
}
if (wmi_service_enabled(
wma->wmi_handle,
wmi_service_sync_delete_cmds))
wmi_service_sync_delete_cmds)) {
wma_cleanup_target_req_param(tgt_req);
goto free_tgt_req;
}
if (wma_send_vdev_down_to_fw(wma, tgt_req->vdev_id) !=
QDF_STATUS_SUCCESS) {