Merge "qcacld-3.0: Handle mem leaks for sap ACS channel list" into wlan-cld3.driver.lnx.2.0

Цей коміт міститься в:
CNSS_WLAN Service
2019-10-18 09:09:15 -07:00
зафіксовано Gerrit - the friendly Code Review server
джерело 7ff488ca01 eeb2554905
коміт 6e5096d456

Переглянути файл

@@ -844,11 +844,8 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
struct wlan_objmgr_vdev *vdev = NULL;
uint8_t i;
uint8_t pdev_id;
#ifdef SOFTAP_CHANNEL_RANGE
uint32_t *freq_list = NULL;
uint8_t num_of_channels = 0;
#endif
mac_handle_t mac_handle;
uint32_t con_ch_freq;
uint8_t vdev_id;
@@ -872,18 +869,6 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
if (sap_context->chan_freq)
return sap_validate_chan(sap_context, true, false);
if (sap_context->freq_list) {
qdf_mem_free(sap_context->freq_list);
sap_context->freq_list = NULL;
sap_context->num_of_channel = 0;
}
sap_get_freq_list(sap_context, &freq_list, &num_of_channels);
if (!num_of_channels) {
sap_err("No freq sutiable for SAP in current list, SAP failed");
return QDF_STATUS_E_FAILURE;
}
if (policy_mgr_concurrent_beaconing_sessions_running(mac_ctx->psoc) ||
((sap_context->cc_switch_mode ==
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) &&
@@ -918,37 +903,47 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
eSAP_SKIP_ACS_SCAN) {
#endif
req = qdf_mem_malloc(sizeof(*req));
if (!req)
return QDF_STATUS_E_NOMEM;
if (sap_context->freq_list) {
qdf_mem_free(sap_context->freq_list);
sap_context->freq_list = NULL;
sap_context->num_of_channel = 0;
}
pdev_id = wlan_objmgr_pdev_get_pdev_id(mac_ctx->pdev);
self_mac = sap_context->self_mac_addr;
vdev = wlan_objmgr_get_vdev_by_macaddr_from_psoc(mac_ctx->psoc,
pdev_id,
self_mac,
WLAN_LEGACY_SME_ID);
if (!vdev) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("Invalid vdev objmgr"));
qdf_mem_free(req);
return QDF_STATUS_E_INVAL;
}
sap_get_freq_list(sap_context, &freq_list, &num_of_channels);
if (!num_of_channels) {
sap_err("No freq sutiable for SAP in current list, SAP failed");
return QDF_STATUS_E_FAILURE;
}
/* Initiate a SCAN request */
ucfg_scan_init_default_params(vdev, req);
scan_id = ucfg_scan_get_scan_id(mac_ctx->psoc);
req->scan_req.scan_id = scan_id;
vdev_id = wlan_vdev_get_id(vdev);
req->scan_req.vdev_id = vdev_id;
req->scan_req.scan_f_passive = false;
req->scan_req.scan_req_id = sap_context->req_id;
req->scan_req.scan_priority = SCAN_PRIORITY_HIGH;
req->scan_req.scan_f_bcast_probe = true;
req = qdf_mem_malloc(sizeof(*req));
if (!req) {
qdf_mem_free(freq_list);
return QDF_STATUS_E_NOMEM;
}
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
if (num_of_channels != 0) {
#endif
pdev_id = wlan_objmgr_pdev_get_pdev_id(mac_ctx->pdev);
self_mac = sap_context->self_mac_addr;
vdev = wlan_objmgr_get_vdev_by_macaddr_from_psoc(mac_ctx->psoc,
pdev_id, self_mac,
WLAN_LEGACY_SME_ID);
if (!vdev) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
FL("Invalid vdev objmgr"));
qdf_mem_free(freq_list);
qdf_mem_free(req);
return QDF_STATUS_E_INVAL;
}
/* Initiate a SCAN request */
ucfg_scan_init_default_params(vdev, req);
scan_id = ucfg_scan_get_scan_id(mac_ctx->psoc);
req->scan_req.scan_id = scan_id;
vdev_id = wlan_vdev_get_id(vdev);
req->scan_req.vdev_id = vdev_id;
req->scan_req.scan_f_passive = false;
req->scan_req.scan_req_id = sap_context->req_id;
req->scan_req.scan_priority = SCAN_PRIORITY_HIGH;
req->scan_req.scan_f_bcast_probe = true;
req->scan_req.chan_list.num_chan = num_of_channels;
for (i = 0; i < num_of_channels; i++)
@@ -974,7 +969,6 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
mac_ctx->pdev,
sap_context->chan_freq);
#ifdef SOFTAP_CHANNEL_RANGE
if (sap_context->freq_list) {
sap_context->chan_freq =
sap_context->freq_list[0];
@@ -982,7 +976,6 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
sap_context->freq_list = NULL;
sap_context->num_of_channel = 0;
}
#endif
/*
* In case of ACS req before start Bss,
* return failure so that the calling
@@ -998,7 +991,6 @@ QDF_STATUS sap_channel_sel(struct sap_context *sap_context)
host_log_acs_scan_start(scan_id, vdev_id);
}
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
}
} else {
sap_context->acs_cfg->skip_scan_status = eSAP_SKIP_ACS_SCAN;
}