diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index bfeeeeb6ceb1..9de21c49a3ba 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -2947,7 +2947,8 @@ QDF_STATUS wma_pno_start(tp_wma_handle wma, tpSirPNOScanReq pno) params = qdf_mem_malloc(sizeof(struct pno_scan_req_params)); if (params == NULL) { WMA_LOGE("%s : Memory allocation failed", __func__); - return QDF_STATUS_E_NOMEM; + status = QDF_STATUS_E_NOMEM; + goto exit_pno_start; } params->enable = pno->enable; @@ -2991,17 +2992,17 @@ QDF_STATUS wma_pno_start(tp_wma_handle wma, tpSirPNOScanReq pno) status = wmi_unified_pno_start_cmd(wma->wmi_handle, params, channel_list); - if (QDF_IS_STATUS_ERROR(status)) { - qdf_mem_free(channel_list); - return status; + if (QDF_IS_STATUS_SUCCESS(status)) { + wma->interfaces[pno->sessionId].pno_in_progress = true; + WMA_LOGD("PNO start request sent successfully for vdev %d", + pno->sessionId); } - qdf_mem_free(channel_list); - wma->interfaces[pno->sessionId].pno_in_progress = true; - - WMA_LOGD("PNO start request sent successfully for vdev %d", - pno->sessionId); - +exit_pno_start: + if (channel_list) + qdf_mem_free(channel_list); + if (params) + qdf_mem_free(params); return status; }