summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWen Gong <wgong@codeaurora.org>2019-06-27 21:21:51 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-07-31 07:28:31 +0200
commitd3dbe913226ecc660987e77a2666e9ecb8fb3bb7 (patch)
tree39abd095f2128879b6a20b6c6adba10439f4e55a
parent18f05a6fc4cfb78ff1de275d9ebf88c3ed5522a2 (diff)
ath10k: destroy sdio workqueue while remove sdio module
[ Upstream commit 3ed39f8e747a7aafeec07bb244f2c3a1bdca5730 ] The workqueue need to flush and destory while remove sdio module, otherwise it will have thread which is not destory after remove sdio modules. Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00007-QCARMSWP-1. Signed-off-by: Wen Gong <wgong@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/wireless/ath/ath10k/sdio.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c
index c6440d28ab48..0a1248ebccf5 100644
--- a/drivers/net/wireless/ath/ath10k/sdio.c
+++ b/drivers/net/wireless/ath/ath10k/sdio.c
@@ -2076,6 +2076,9 @@ static void ath10k_sdio_remove(struct sdio_func *func)
cancel_work_sync(&ar_sdio->wr_async_work);
ath10k_core_unregister(ar);
ath10k_core_destroy(ar);
+
+ flush_workqueue(ar_sdio->workqueue);
+ destroy_workqueue(ar_sdio->workqueue);
}
static const struct sdio_device_id ath10k_sdio_devices[] = {