| From 9833c3ef4e5dafbff02fb4e814a325971d30f08f Mon Sep 17 00:00:00 2001 |
| From: Wen Gong <wgong@codeaurora.org> |
| Date: Thu, 27 Jun 2019 21:21:51 +0300 |
| Subject: 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> |
| --- |
| drivers/net/wireless/ath/ath10k/sdio.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/drivers/net/wireless/ath/ath10k/sdio.c b/drivers/net/wireless/ath/ath10k/sdio.c |
| index 73ef3e75d199..28bdf0212538 100644 |
| --- a/drivers/net/wireless/ath/ath10k/sdio.c |
| +++ b/drivers/net/wireless/ath/ath10k/sdio.c |
| @@ -2081,6 +2081,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[] = { |
| -- |
| 2.20.1 |
| |