Selaa lähdekoodia

qcacld-3.0: Fix start BSS failure

In function csr_roam_join_handle_profile, add NULL pointer check for
"result" after call to csr_roam_select_bss rather than before
csr_roam_join_handle_profile, since it is called for BSS role as well.

Change-Id: I800891fd66d5c851537968515e43eadbe38a2ae8
CRs-Fixed: 1038237
Naveen Rawat 8 vuotta sitten
vanhempi
sitoutus
696a930c25
1 muutettua tiedostoa jossa 8 lisäystä ja 12 poistoa
  1. 8 12
      core/sme/src/csr/csr_api_roam.c

+ 8 - 12
core/sme/src/csr/csr_api_roam.c

@@ -5073,7 +5073,7 @@ static void csr_roam_join_handle_profile(tpAniSirGlobal mac_ctx,
 		else
 			ies_local = scan_result->Result.pvIes;
 
-		if (scan_result && !ies_local &&
+		if (scan_result && !ies_local && result &&
 			(!QDF_IS_STATUS_SUCCESS(
 					csr_get_parsed_bss_description_ies(
 						mac_ctx,
@@ -5083,20 +5083,22 @@ static void csr_roam_join_handle_profile(tpAniSirGlobal mac_ctx,
 			*roam_state = eCsrStopRoaming;
 			return;
 		}
-		roam_info_ptr->pBssDesc = &result->BssDescriptor;
+		if (result)
+			roam_info_ptr->pBssDesc = &result->BssDescriptor;
 		cmd->u.roamCmd.pLastRoamBss = roam_info_ptr->pBssDesc;
 		/* dont put uapsd_mask if BSS doesn't support uAPSD */
 		if (scan_result && cmd->u.roamCmd.roamProfile.uapsd_mask
 				&& CSR_IS_QOS_BSS(ies_local)
 				&& CSR_IS_UAPSD_BSS(ies_local)) {
 #ifndef WLAN_MDM_CODE_REDUCTION_OPT
-			acm_mask = sme_qos_get_acm_mask(mac_ctx,
+			if (result)
+				acm_mask = sme_qos_get_acm_mask(mac_ctx,
 					&result->BssDescriptor, ies_local);
 #endif /* WLAN_MDM_CODE_REDUCTION_OPT */
 		} else {
 			cmd->u.roamCmd.roamProfile.uapsd_mask = 0;
 		}
-		if (ies_local && !result->pvIes)
+		if (ies_local && result && !result->pvIes)
 			qdf_mem_free(ies_local);
 		roam_info_ptr->pProfile = profile;
 		session->bRefAssocStartCnt++;
@@ -5267,14 +5269,8 @@ static eCsrJoinState csr_roam_join_next_bss(tpAniSirGlobal mac_ctx,
 		roam_info_ptr = &roam_info;
 	roam_info_ptr->u.pConnectedProfile = &session->connectedProfile;
 
-	/*
-	 * result will be null if passed pRoamBssEntry is NULL, which
-	 * indicates we are done with all BSSs in list.
-	 */
-	if (result != NULL)
-		csr_roam_join_handle_profile(mac_ctx, session_id, cmd,
-					     roam_info_ptr, &roam_state,
-					     result, scan_result);
+	csr_roam_join_handle_profile(mac_ctx, session_id, cmd, roam_info_ptr,
+		&roam_state, result, scan_result);
 end:
 	if ((eCsrStopRoaming == roam_state) && CSR_IS_INFRASTRUCTURE(profile) &&
 		(session->bRefAssocStartCnt > 0)) {