diff mbox series

ath11k: fix workqueue not getting destroyed after rmmod

Message ID 1640231787-17408-1-git-send-email-quic_adisi@quicinc.com (mailing list archive)
State Accepted
Commit 9f4ecacf2fa47b8aadd9bca2e88cde01856de028
Delegated to: Kalle Valo
Headers show
Series ath11k: fix workqueue not getting destroyed after rmmod | expand

Commit Message

Aditya Kumar Singh Dec. 23, 2021, 3:56 a.m. UTC
Currently, ath11k_core_alloc() creates a single thread workqueue.
This workqueue is not detroyed during clean up when ath11k modules
are unloaded from the kernel and is left as it is.
If workqueue is not destroyed, it could lead to kernel
memory scarcity in a longer run. This could affect self and
other drivers workability as well.

Add destroy workqueue in ath11k_core_free(). 

Tested on: IPQ8074 WLAN.HK.2.4.0.1-01746-QCAHKSWPL_SILICONZ-1

Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/core.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Kalle Valo Jan. 11, 2022, 2:38 p.m. UTC | #1
Aditya Kumar Singh <quic_adisi@quicinc.com> wrote:

> Currently, ath11k_core_alloc() creates a single thread workqueue.
> This workqueue is not detroyed during clean up when ath11k modules
> are unloaded from the kernel and is left as it is.
> If workqueue is not destroyed, it could lead to kernel
> memory scarcity in a longer run. This could affect self and
> other drivers workability as well.
> 
> Add destroy workqueue in ath11k_core_free().
> 
> Tested on: IPQ8074 WLAN.HK.2.4.0.1-01746-QCAHKSWPL_SILICONZ-1
> 
> Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

9f4ecacf2fa4 ath11k: fix workqueue not getting destroyed after rmmod
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 2ba3bf8..6de0fc5 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -1,6 +1,7 @@ 
 // SPDX-License-Identifier: BSD-3-Clause-Clear
 /*
  * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <linux/module.h>
@@ -1172,6 +1173,9 @@  EXPORT_SYMBOL(ath11k_core_deinit);
 
 void ath11k_core_free(struct ath11k_base *ab)
 {
+	flush_workqueue(ab->workqueue);
+	destroy_workqueue(ab->workqueue);
+
 	kfree(ab);
 }
 EXPORT_SYMBOL(ath11k_core_free);