Browse Source

qcacld-3.0: Release vdev ref count in error path

Release vdev ref count in error path.

Change-Id: Id59695cc48a4211bfba1a87ac12a44f90961d7f5
CRs-Fixed: 3345522
Liangwei Dong 2 years ago
parent
commit
8646ae0f4c
2 changed files with 12 additions and 6 deletions
  1. 11 5
      core/mac/src/pe/lim/lim_api.c
  2. 1 1
      core/sme/src/csr/csr_api_roam.c

+ 11 - 5
core/mac/src/pe/lim/lim_api.c

@@ -3451,7 +3451,8 @@ lim_cm_fill_link_session(struct mac_context *mac_ctx,
 
 	if (!assoc_vdev) {
 		pe_err("Assoc vdev is NULL");
-		return QDF_STATUS_E_FAILURE;
+		status = QDF_STATUS_E_FAILURE;
+		goto end;
 	}
 
 	status = wlan_vdev_mlme_get_ssid(assoc_vdev,
@@ -3461,15 +3462,18 @@ lim_cm_fill_link_session(struct mac_context *mac_ctx,
 	if (QDF_IS_STATUS_ERROR(status)) {
 		pe_err("Failed to get ssid vdev id %d",
 		       vdev_id);
-		return QDF_STATUS_E_FAILURE;
+		status = QDF_STATUS_E_FAILURE;
+		goto end;
 	}
 
 	sir_copy_mac_addr(pe_session->bssId, sync_ind->bssid.bytes);
 
 	pe_session->lim_join_req =
 		qdf_mem_malloc(sizeof(*pe_session->lim_join_req) + bss_len);
-	if (!pe_session->lim_join_req)
-		return QDF_STATUS_E_NOMEM;
+	if (!pe_session->lim_join_req) {
+		status = QDF_STATUS_E_NOMEM;
+		goto end;
+	}
 
 	pe_join_req = pe_session->lim_join_req;
 	bss_desc = &pe_session->lim_join_req->bssDescription;
@@ -3506,6 +3510,8 @@ end:
 		qdf_mem_free(pe_session->lim_join_req);
 		pe_session->lim_join_req = NULL;
 	}
+	wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
+
 	return status;
 }
 
@@ -3595,7 +3601,7 @@ void lim_roam_mlo_create_peer(struct mac_context *mac,
 		return;
 
 	if (!wlan_vdev_mlme_is_mlo_vdev(vdev))
-		return;
+		goto end;
 
 	link_id = mlo_roam_get_link_id(vdev_id, sync_ind);
 	/* currently only 2 link MLO supported */

+ 1 - 1
core/sme/src/csr/csr_api_roam.c

@@ -7858,7 +7858,7 @@ QDF_STATUS csr_roam_issue_stop_bss_cmd(struct mac_context *mac,
 	sme_debug("Stop BSS vdev_id: %d bss_type %d", vdev_id, bss_type);
 	stop_bss_req = qdf_mem_malloc(sizeof(*stop_bss_req));
 	if (!stop_bss_req)
-		return QDF_STATUS_E_FAILURE;
+		goto error;
 
 	stop_bss_req->vdev_id = vdev_id;
 	stop_bss_req->cmd_id = csr_get_monotonous_number(mac);