From aea01e02ecbe0e36bbfda207444960c8bdf28007 Mon Sep 17 00:00:00 2001 From: Will Huang Date: Wed, 22 May 2019 16:11:19 +0800 Subject: [PATCH] qcacld-3.0: Release vdev reference when sap_get_channel_list failed If sap_get_channel_list return 0 channel, didn't release vdev reference acquired by wlan_objmgr_get_vdev_by_macaddr_from_psoc() in function sap_channel_sel(). Release the vdev reference at the end of function sap_channel_sel(). Change-Id: Ib8d240e464ea893d97fef5f563bfb080646bae46 CRs-Fixed: 2457532 --- core/sap/src/sap_fsm.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/sap/src/sap_fsm.c b/core/sap/src/sap_fsm.c index 79b0ff6d0a9f..8f3de958b12b 100644 --- a/core/sap/src/sap_fsm.c +++ b/core/sap/src/sap_fsm.c @@ -924,7 +924,7 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context) QDF_STATUS qdf_ret_status; struct mac_context *mac_ctx; struct scan_start_request *req; - struct wlan_objmgr_vdev *vdev; + struct wlan_objmgr_vdev *vdev = NULL; uint8_t i; uint8_t pdev_id; @@ -1039,8 +1039,7 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context) sap_context->acs_req_timestamp = qdf_get_time_of_the_day_ms(); qdf_ret_status = ucfg_scan_start(req); - wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); - if (qdf_ret_status != QDF_STATUS_SUCCESS) { + if (qdf_ret_status != QDF_STATUS_SUCCESS) { QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR, FL("scan request fail %d!!!"), qdf_ret_status); @@ -1065,7 +1064,8 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context) * return failure so that the calling * function can use the default channel. */ - return QDF_STATUS_E_FAILURE; + qdf_ret_status = QDF_STATUS_E_FAILURE; + goto release_vdev_ref; } else { QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH, FL("return sme_ScanReq, scanID=%d, Ch=%d"), @@ -1099,7 +1099,12 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context) FL("Channel: %d"), sap_context->channel); - return QDF_STATUS_SUCCESS; + qdf_ret_status = QDF_STATUS_SUCCESS; + +release_vdev_ref: + if (vdev) + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); + return qdf_ret_status; } /**