Commit b713bbf1 authored by Xinming Hu's avatar Xinming Hu Committed by Kalle Valo

mwifiex: cancel pcie/sdio work in remove/shutdown handler

The last command used to shutdown firmware might be timeout,
and trigger firmware dump in asynchronous pcie/sdio work.

The remove/shutdown handler will continue free core data
structure private/adapter, which might be dereferenced in
pcie/sdio work, finally crash the kernel.

Sync and Cancel pcie/sdio work, could be a fix for above
cornel case. In this way, the last command timeout could
be handled properly.
Signed-off-by: default avatarXinming Hu <huxm@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 18d60501
...@@ -310,6 +310,8 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev) ...@@ -310,6 +310,8 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev)
mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN); mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
} }
cancel_work_sync(&card->work);
mwifiex_remove_card(adapter); mwifiex_remove_card(adapter);
} }
......
...@@ -399,6 +399,8 @@ mwifiex_sdio_remove(struct sdio_func *func) ...@@ -399,6 +399,8 @@ mwifiex_sdio_remove(struct sdio_func *func)
mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN); mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
} }
cancel_work_sync(&card->work);
mwifiex_remove_card(adapter); mwifiex_remove_card(adapter);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment