From ff4e1c4bc4437a5b82778969ef1eedec4741778a Mon Sep 17 00:00:00 2001 From: Ashish Kumar Dhanotiya Date: Tue, 14 Mar 2017 15:54:05 +0530 Subject: [PATCH] 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 --- core/hdd/src/wlan_hdd_ioctl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/hdd/src/wlan_hdd_ioctl.c b/core/hdd/src/wlan_hdd_ioctl.c index b8fe11f7e30b..6e906dafd357 100644 --- a/core/hdd/src/wlan_hdd_ioctl.c +++ b/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 */