浏览代码

qcacld-3.0: Allocate memory for cds config only once

During the driver load cds_cfg memory is allocated during the
hdd_Wlan_startup and cds_open. Since the memory allocated by the
cds_open overwrites the pointer of memory allocated by hdd_wlan_statup
during memory free only memory allocated by cds_open is freed resulting
in memory leakage.

To migitate this issue, allocate the memory for the cds config only once.

Change-Id: I01bf0e8110a2519a2e11da398be3c98f9ca4db8f
CRs-Fixed: 1055648
Arun Khandavalli 8 年之前
父节点
当前提交
f6246630ce
共有 2 个文件被更改,包括 7 次插入6 次删除
  1. 1 2
      core/cds/src/cds_api.c
  2. 6 4
      core/hdd/src/wlan_hdd_main.c

+ 1 - 2
core/cds/src/cds_api.c

@@ -268,7 +268,6 @@ QDF_STATUS cds_open(void)
 		goto err_sched_close;
 	}
 
-	hdd_update_config(pHddCtx);
 	cds_cfg = cds_get_ini_config();
 	if (!cds_cfg) {
 		cds_err("Cds config is NULL");
@@ -2191,7 +2190,7 @@ void cds_deinit_ini_config(void)
 		return;
 	}
 
-	if (!cds_ctx->cds_cfg)
+	if (cds_ctx->cds_cfg)
 		qdf_mem_free(cds_ctx->cds_cfg);
 
 	cds_ctx->cds_cfg = NULL;

+ 6 - 4
core/hdd/src/wlan_hdd_main.c

@@ -1731,6 +1731,12 @@ int hdd_wlan_start_modules(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter,
 			goto hif_close;
 		}
 
+		ret = hdd_update_config(hdd_ctx);
+		if (ret) {
+			hdd_err("Failed to update configuration :%d", ret);
+			goto ol_cds_free;
+		}
+
 		status = cds_open();
 		if (!QDF_IS_STATUS_SUCCESS(status)) {
 			hdd_err("Failed to Open CDS: %d", status);
@@ -7384,10 +7390,6 @@ int hdd_wlan_startup(struct device *dev)
 
 	hdd_wlan_green_ap_init(hdd_ctx);
 
-	ret = hdd_update_config(hdd_ctx);
-	if (ret)
-		goto err_exit_nl_srv;
-
 	ret = hdd_wlan_start_modules(hdd_ctx, adapter, false);
 	if (ret) {
 		hdd_alert("Failed to start modules: %d", ret);