Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e7de47c authored by Hardik Kantilal Patel's avatar Hardik Kantilal Patel
Browse files

icnss: pre-alloc memory leak check on probe failure and remove



After wlan host driver probe failure and driver unload check the
memory leak and reset the memory pool.

CRs-Fixed: 2027407
Change-Id: Id6e413416ec7ea1d1bf0e69aab7eccb06de753d7
Signed-off-by: default avatarHardik Kantilal Patel <hkpatel@codeaurora.org>
parent 948f3d74
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -226,6 +226,8 @@ void wcnss_prealloc_check_memory_leak(void)
	}

}
#else
void wcnss_prealloc_check_memory_leak(void) {}
#endif

int wcnss_pre_alloc_reset(void)
+13 −0
Original line number Diff line number Diff line
@@ -48,6 +48,11 @@
#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
@@ -1947,6 +1952,8 @@ 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;
	}

@@ -2076,6 +2083,8 @@ 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;
	}

@@ -2101,6 +2110,8 @@ 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;

@@ -2125,6 +2136,8 @@ 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);