Explorar el Código

qcacld-3.0: Check module status before processing driver command

If the driver module is closed do not process the driver command,
it will lead to a crash by accesssing uninitialized lock.

To handle this issue check the module status before processing
driver command and if module is closed, simply return error.

Change-Id: Ic651e1abdf6b2efa27e57695c04ace249f9d21bb
CRs-Fixed: 2018746
Ashish Kumar Dhanotiya hace 8 años
padre
commit
ff4e1c4bc4
Se han modificado 1 ficheros con 10 adiciones y 0 borrados
  1. 10 0
      core/hdd/src/wlan_hdd_ioctl.c

+ 10 - 0
core/hdd/src/wlan_hdd_ioctl.c

@@ -7248,6 +7248,7 @@ static int hdd_driver_command(hdd_adapter_t *adapter,
 {
 	uint8_t *command = NULL;
 	int ret = 0;
+	hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 
 	ENTER();
 
@@ -7256,6 +7257,15 @@ static int hdd_driver_command(hdd_adapter_t *adapter,
 		return -EINVAL;
 	}
 
+	ret = wlan_hdd_validate_context(hdd_ctx);
+	if (ret)
+		return ret;
+
+	if (hdd_ctx->driver_status == DRIVER_MODULES_CLOSED) {
+		hdd_err("Driver module is closed; command can not be processed");
+		return -EINVAL;
+	}
+
 	/*
 	 * Note that valid pointers are provided by caller
 	 */