diff options
| author | Hardik Kantilal Patel <hkpatel@codeaurora.org> | 2017-04-27 11:55:45 +0530 |
|---|---|---|
| committer | Hardik Kantilal Patel <hkpatel@codeaurora.org> | 2017-05-02 11:09:35 +0530 |
| commit | 98dc1b47953d177a3647b9daea2c80869439273f (patch) | |
| tree | 919c4e9e6d7cd4b8441e84fa2abbe50de20115d7 | |
| parent | f1a10f1598632dc7ab10b369083a21ff68b8398b (diff) | |
icnss: remove pre-alloc memory leak check in platform driver
The WLAN host driver is allocating the memory from pre-alloc pool
during insmod/wlan start up before WLAN driver register and
release the pre-alloc memory after driver unregister/remove.
The Pre-alloc memory leak check and reset in Icnss platform driver
on probe failure and after remove will leads to invalid memory
leak stat and dangling pointer for wlan host driver allocated memory
from the pre-alloc memory pool.
To fix the above issue remove the pre-allaoc memory leak
check and pre-alloc memory pool reset from the icnss platform
driver and export symbol for the pre-alloc memory leak check
and pre-alloc memory pool reset.
CRs-Fixed: 2039483
Change-Id: Id9f01c9d2b5184fbb58935eaf11fd21b50b47908
Signed-off-by: Hardik Kantilal Patel <hkpatel@codeaurora.org>
| -rw-r--r-- | drivers/net/wireless/cnss_prealloc/cnss_prealloc.c | 2 | ||||
| -rw-r--r-- | drivers/soc/qcom/icnss.c | 13 |
2 files changed, 2 insertions, 13 deletions
diff --git a/drivers/net/wireless/cnss_prealloc/cnss_prealloc.c b/drivers/net/wireless/cnss_prealloc/cnss_prealloc.c index 09c37c2383c6..af64b3dc4da8 100644 --- a/drivers/net/wireless/cnss_prealloc/cnss_prealloc.c +++ b/drivers/net/wireless/cnss_prealloc/cnss_prealloc.c @@ -228,6 +228,7 @@ void wcnss_prealloc_check_memory_leak(void) #else void wcnss_prealloc_check_memory_leak(void) {} #endif +EXPORT_SYMBOL(wcnss_prealloc_check_memory_leak); int wcnss_pre_alloc_reset(void) { @@ -243,6 +244,7 @@ int wcnss_pre_alloc_reset(void) return n; } +EXPORT_SYMBOL(wcnss_pre_alloc_reset); int prealloc_memory_stats_show(struct seq_file *fp, void *data) { diff --git a/drivers/soc/qcom/icnss.c b/drivers/soc/qcom/icnss.c index 51a6e3bf0e64..69e0ebc78f6f 100644 --- a/drivers/soc/qcom/icnss.c +++ b/drivers/soc/qcom/icnss.c @@ -48,11 +48,6 @@ #include <soc/qcom/socinfo.h> #include <soc/qcom/ramdump.h> -#ifdef CONFIG_WCNSS_MEM_PRE_ALLOC -#include <net/cnss_prealloc.h> -#endif - - #include "wlan_firmware_service_v01.h" #ifdef CONFIG_ICNSS_DEBUG @@ -1969,8 +1964,6 @@ static int icnss_call_driver_probe(struct icnss_priv *priv) if (ret < 0) { icnss_pr_err("Driver probe failed: %d, state: 0x%lx\n", ret, priv->state); - wcnss_prealloc_check_memory_leak(); - wcnss_pre_alloc_reset(); goto out; } @@ -2105,8 +2098,6 @@ static int icnss_driver_event_register_driver(void *data) if (ret) { icnss_pr_err("Driver probe failed: %d, state: 0x%lx\n", ret, penv->state); - wcnss_prealloc_check_memory_leak(); - wcnss_pre_alloc_reset(); goto power_off; } @@ -2131,8 +2122,6 @@ static int icnss_driver_event_unregister_driver(void *data) penv->ops->remove(&penv->pdev->dev); clear_bit(ICNSS_DRIVER_PROBED, &penv->state); - wcnss_prealloc_check_memory_leak(); - wcnss_pre_alloc_reset(); penv->ops = NULL; @@ -2157,8 +2146,6 @@ static int icnss_call_driver_remove(struct icnss_priv *priv) penv->ops->remove(&priv->pdev->dev); clear_bit(ICNSS_DRIVER_PROBED, &priv->state); - wcnss_prealloc_check_memory_leak(); - wcnss_pre_alloc_reset(); icnss_hw_power_off(penv); |
