Revert "mwifiex: cancel pcie/sdio work in remove/shutdown handler"
authorBrian Norris <briannorris@chromium.org>
Fri, 12 Jan 2018 21:08:36 +0000 (13:08 -0800)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 16 Jan 2018 16:00:16 +0000 (18:00 +0200)
This reverts commit b713bbf1471b56b572ce26bd02b81a85c2b007f4.

The "fix" in question does not actually fix all related problems, and it
also introduces new deadlock possibilities. Since commit b014e96d1abb
("PCI: Protect pci_error_handlers->reset_notify() usage with
device_lock()"), the race in question is actually resolved (PCIe reset
cannot happen at the same time as remove()). Instead, this "fix" just
introduces a deadlock where mwifiex_pcie_card_reset_work() is waiting on
device_lock, which is held by PCIe device remove(), which is waiting
on...mwifiex_pcie_card_reset_work().

The proper thing to do is just to fix the deadlock. Patch for this will
come separately.

Cc: Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/pcie.c
drivers/net/wireless/marvell/mwifiex/sdio.c

index 23209c5cab05e86057359b4b9b6694307f7d67a5..f666cb2ea7e03496cfe4dab4ddcd3f264fb8617b 100644 (file)
@@ -310,8 +310,6 @@ static void mwifiex_pcie_remove(struct pci_dev *pdev)
                mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
        }
 
-       cancel_work_sync(&card->work);
-
        mwifiex_remove_card(adapter);
 }
 
index 248858723753d8bcca0ed53a751e981c84c0f45b..a82880132af409a79e0dd6076843e92ad7987bc7 100644 (file)
@@ -399,8 +399,6 @@ mwifiex_sdio_remove(struct sdio_func *func)
                mwifiex_init_shutdown_fw(priv, MWIFIEX_FUNC_SHUTDOWN);
        }
 
-       cancel_work_sync(&card->work);
-
        mwifiex_remove_card(adapter);
 }