Browse Source

qcacld-3.0: Fix off-by-one errors in PMO

The following PMO functions have been identified as having off-by-one
logic errors. Address these errors.

 * pmo_register_resume_handler
 * pmo_register_suspend_handler
 * pmo_unregister_resume_handler
 * pmo_suspend_all_components

Change-Id: I6a328fc24ae6a575ef56cf9532133eb666e0dc8c
CRs-Fixed: 2232388
Dustin Brown 7 years ago
parent
commit
dd2178d146
1 changed files with 6 additions and 6 deletions
  1. 6 6
      components/pmo/dispatcher/src/wlan_pmo_obj_mgmt_api.c

+ 6 - 6
components/pmo/dispatcher/src/wlan_pmo_obj_mgmt_api.c

@@ -337,7 +337,7 @@ QDF_STATUS pmo_register_suspend_handler(
 		goto out;
 	}
 
-	if (id > WLAN_UMAC_MAX_COMPONENTS || id < 0) {
+	if (id < 0 || id >= WLAN_UMAC_MAX_COMPONENTS) {
 		pmo_err("component id: %d is %s then valid components id",
 			id, id < 0 ? "Less" : "More");
 		status = QDF_STATUS_E_FAILURE;
@@ -370,7 +370,7 @@ QDF_STATUS pmo_unregister_suspend_handler(
 		goto out;
 	}
 
-	if (id >= WLAN_UMAC_MAX_COMPONENTS || id < 0) {
+	if (id < 0 || id >= WLAN_UMAC_MAX_COMPONENTS) {
 		pmo_err("component id: %d is %s then valid components id",
 			id, id < 0 ? "Less" : "More");
 		status = QDF_STATUS_E_FAILURE;
@@ -409,7 +409,7 @@ QDF_STATUS pmo_register_resume_handler(
 		goto out;
 	}
 
-	if (id > WLAN_UMAC_MAX_COMPONENTS || id < 0) {
+	if (id < 0 || id >= WLAN_UMAC_MAX_COMPONENTS) {
 		pmo_err("component id: %d is %s then valid components id",
 			id, id < 0 ? "Less" : "More");
 		status = QDF_STATUS_E_FAILURE;
@@ -441,7 +441,7 @@ QDF_STATUS pmo_unregister_resume_handler(
 		goto out;
 	}
 
-	if (id > WLAN_UMAC_MAX_COMPONENTS || id < 0) {
+	if (id < 0 || id >= WLAN_UMAC_MAX_COMPONENTS) {
 		pmo_err("component id: %d is %s then valid components id",
 			id, id < 0 ? "Less" : "More");
 		status = QDF_STATUS_E_FAILURE;
@@ -470,7 +470,7 @@ QDF_STATUS pmo_suspend_all_components(struct wlan_objmgr_psoc *psoc,
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 	QDF_STATUS resume_status;
 	struct wlan_pmo_ctx *pmo_ctx;
-	uint8_t i;
+	int i;
 	pmo_psoc_suspend_handler handler;
 	void *arg;
 
@@ -521,7 +521,7 @@ suspend_recovery:
 			pmo_fatal("Non-recoverable failure occurred!");
 			pmo_fatal("component %d failed to resume; status: %d",
 				  i, resume_status);
-			QDF_BUG(0);
+			QDF_DEBUG_PANIC();
 		}
 	}