diff options
| author | Deepak Dhamdhere <ddhamdhe@codeaurora.org> | 2016-08-29 00:02:45 -0700 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2016-09-06 16:27:08 -0700 |
| commit | 94580ee4eaf618827c5ce0053fc79203e8dfb811 (patch) | |
| tree | e8deb1bdc916d947ec2040558209982555bfeddd | |
| parent | 7d06dd55c95d5e5f3b00d95958ed1d7b859e6783 (diff) | |
qcacld-3.0: Fix memory leaks in wma_pno_start()
Clean up the exit path to free the channel list and params buffers.
CRs-Fixed: 1056031
Change-Id: I2d7910169e9535ae03c37c9ffe07fd2a7b763350
| -rw-r--r-- | core/wma/src/wma_scan_roam.c | 21 |
1 files changed, 11 insertions, 10 deletions
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; } |
