Bladeren bron

qcacmn: Error handling in Crypto API

Incorporate cleanup in the error handling for
Crypto API.

Change-Id: I223d8149eada20b7bf5b2c92d485a26b88d1a00e
Kani M 4 jaren geleden
bovenliggende
commit
bc64bbccf3
1 gewijzigde bestanden met toevoegingen van 76 en 24 verwijderingen
  1. 76 24
      umac/cmn_services/crypto/src/wlan_crypto_global_api.c

+ 76 - 24
umac/cmn_services/crypto/src/wlan_crypto_global_api.c

@@ -254,7 +254,7 @@ QDF_STATUS wlan_crypto_set_peer_param(struct wlan_objmgr_peer *peer,
 static int32_t wlan_crypto_get_param_value(wlan_crypto_param_type param,
 				struct wlan_crypto_params *crypto_params)
 {
-	int32_t value = -1;
+	int32_t value;
 
 	switch (param) {
 	case WLAN_CRYPTO_PARAM_AUTH_MODE:
@@ -279,7 +279,7 @@ static int32_t wlan_crypto_get_param_value(wlan_crypto_param_type param,
 		value = wlan_crypto_get_key_mgmt(crypto_params);
 		break;
 	default:
-		value = QDF_STATUS_E_INVAL;
+		value = -1;
 	}
 
 	return value;
@@ -305,7 +305,7 @@ int32_t wlan_crypto_get_param(struct wlan_objmgr_vdev *vdev,
 
 	if (!crypto_priv) {
 		crypto_err("crypto_priv NULL");
-		return QDF_STATUS_E_INVAL;
+		return value;
 	}
 
 	crypto_params = &(crypto_priv->crypto_params);
@@ -334,7 +334,7 @@ int32_t wlan_crypto_get_peer_param(struct wlan_objmgr_peer *peer,
 
 	if (!crypto_params) {
 		crypto_err("crypto_params NULL");
-		return QDF_STATUS_E_INVAL;
+		return value;
 	}
 	value = wlan_crypto_get_param_value(param, crypto_params);
 
@@ -628,6 +628,11 @@ uint8_t wlan_crypto_is_htallowed(struct wlan_objmgr_vdev *vdev,
 		ucast_cipher = wlan_crypto_get_peer_param(peer,
 				WLAN_CRYPTO_PARAM_UCAST_CIPHER);
 
+	if (ucast_cipher == -1) {
+		crypto_err("Invalid params");
+		return 0;
+	}
+
 	return (ucast_cipher & (1 << WLAN_CRYPTO_CIPHER_WEP)) ||
 		((ucast_cipher & (1 << WLAN_CRYPTO_CIPHER_TKIP)) &&
 		!(ucast_cipher & (1 << WLAN_CRYPTO_CIPHER_AES_CCM)) &&
@@ -1866,7 +1871,7 @@ bool wlan_crypto_vdev_is_pmf_enabled(struct wlan_objmgr_vdev *vdev)
 							&crypto_priv);
 	if (!crypto_priv) {
 		crypto_err("crypto_priv NULL");
-		return QDF_STATUS_E_INVAL;
+		return false;
 	}
 
 	if ((vdev_crypto_params->rsn_caps &
@@ -1899,7 +1904,7 @@ bool wlan_crypto_vdev_is_pmf_required(struct wlan_objmgr_vdev *vdev)
 							      &crypto_priv);
 	if (!crypto_priv) {
 		crypto_err("crypto_priv NULL");
-		return QDF_STATUS_E_INVAL;
+		return false;
 	}
 
 	if (vdev_crypto_params->rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_REQUIRED)
@@ -1930,14 +1935,14 @@ bool wlan_crypto_is_pmf_enabled(struct wlan_objmgr_vdev *vdev,
 							&crypto_priv);
 	if (!crypto_priv) {
 		crypto_err("crypto_priv NULL");
-		return QDF_STATUS_E_INVAL;
+		return false;
 	}
 
 	peer_crypto_params = wlan_crypto_peer_get_comp_params(peer,
 							&crypto_priv);
 	if (!crypto_priv) {
 		crypto_err("crypto_priv NULL");
-		return QDF_STATUS_E_INVAL;
+		return false;
 	}
 	if (((vdev_crypto_params->rsn_caps &
 					WLAN_CRYPTO_RSN_CAP_MFP_ENABLED) &&
@@ -3533,8 +3538,13 @@ qdf_export_symbol(wlan_crypto_get_crypto_rx_ops);
 bool wlan_crypto_vdev_has_auth_mode(struct wlan_objmgr_vdev *vdev,
 					wlan_crypto_auth_mode authvalue)
 {
-	return wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_AUTH_MODE)
-			& authvalue;
+	int res;
+
+	res = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_AUTH_MODE);
+
+	if (res != -1)
+		return (res & authvalue) ? true : false;
+	return false;
 }
 qdf_export_symbol(wlan_crypto_vdev_has_auth_mode);
 
@@ -3550,8 +3560,14 @@ qdf_export_symbol(wlan_crypto_vdev_has_auth_mode);
 bool wlan_crypto_peer_has_auth_mode(struct wlan_objmgr_peer *peer,
 					wlan_crypto_auth_mode authvalue)
 {
-	return wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_AUTH_MODE)
-			& authvalue;
+	int res;
+
+	res = wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_AUTH_MODE);
+
+	if (res != -1)
+		return (res & authvalue) ? true : false;
+
+	return false;
 }
 qdf_export_symbol(wlan_crypto_peer_has_auth_mode);
 
@@ -3567,8 +3583,14 @@ qdf_export_symbol(wlan_crypto_peer_has_auth_mode);
 bool wlan_crypto_vdev_has_ucastcipher(struct wlan_objmgr_vdev *vdev,
 					wlan_crypto_cipher_type ucastcipher)
 {
-	return wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_UCAST_CIPHER)
-			& ucastcipher;
+	int res;
+
+	res = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_UCAST_CIPHER);
+
+	if (res != -1)
+		return (res & ucastcipher) ? true : false;
+
+	return false;
 }
 qdf_export_symbol(wlan_crypto_vdev_has_ucastcipher);
 
@@ -3584,8 +3606,14 @@ qdf_export_symbol(wlan_crypto_vdev_has_ucastcipher);
 bool wlan_crypto_peer_has_ucastcipher(struct wlan_objmgr_peer *peer,
 					wlan_crypto_cipher_type ucastcipher)
 {
-	return wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_UCAST_CIPHER)
-			& ucastcipher;
+	int res;
+
+	res = wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_UCAST_CIPHER);
+
+	if (res != -1)
+		return (res & ucastcipher) ? true : false;
+
+	return false;
 }
 qdf_export_symbol(wlan_crypto_peer_has_ucastcipher);
 
@@ -3601,8 +3629,14 @@ qdf_export_symbol(wlan_crypto_peer_has_ucastcipher);
 bool wlan_crypto_vdev_has_mcastcipher(struct wlan_objmgr_vdev *vdev,
 					wlan_crypto_cipher_type mcastcipher)
 {
-	return wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_MCAST_CIPHER)
-			& mcastcipher;
+	int res;
+
+	res = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_MCAST_CIPHER);
+
+	if (res != -1)
+		return (res & mcastcipher) ? true : false;
+
+	return false;
 }
 qdf_export_symbol(wlan_crypto_vdev_has_mcastcipher);
 
@@ -3618,8 +3652,14 @@ qdf_export_symbol(wlan_crypto_vdev_has_mcastcipher);
 bool wlan_crypto_peer_has_mcastcipher(struct wlan_objmgr_peer *peer,
 					wlan_crypto_cipher_type mcastcipher)
 {
-	return wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_MCAST_CIPHER)
-			& mcastcipher;
+	int res;
+
+	res = wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_MCAST_CIPHER);
+
+	if (res != -1)
+		return (res & mcastcipher) ? true : false;
+
+	return false;
 }
 qdf_export_symbol(wlan_crypto_peer_has_mcastcipher);
 
@@ -3635,8 +3675,14 @@ qdf_export_symbol(wlan_crypto_peer_has_mcastcipher);
 bool wlan_crypto_vdev_has_mgmtcipher(struct wlan_objmgr_vdev *vdev,
 				     uint32_t mgmtcipher)
 {
-	return (wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_MGMT_CIPHER)
-			& mgmtcipher) != 0;
+	int res;
+
+	res = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_MGMT_CIPHER);
+
+	if (res != -1)
+		return (res & mgmtcipher) ? true : false;
+
+	return false;
 }
 
 qdf_export_symbol(wlan_crypto_vdev_has_mgmtcipher);
@@ -3653,8 +3699,14 @@ qdf_export_symbol(wlan_crypto_vdev_has_mgmtcipher);
 bool wlan_crypto_peer_has_mgmtcipher(struct wlan_objmgr_peer *peer,
 				     uint32_t mgmtcipher)
 {
-	return (wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_MGMT_CIPHER)
-			& mgmtcipher) != 0;
+	int res;
+
+	res = wlan_crypto_get_peer_param(peer, WLAN_CRYPTO_PARAM_MGMT_CIPHER);
+
+	if (res != -1)
+		return (res & mgmtcipher) ? true : false;
+
+	return false;
 }
 
 qdf_export_symbol(wlan_crypto_peer_has_mgmtcipher);