diff mbox

[1/2] Revert "mwifiex: cancel pcie/sdio work in remove/shutdown handler"

Message ID 20180112210837.112628-1-briannorris@chromium.org (mailing list archive)
State Accepted
Commit 7e34c0d2f631a1ecd4a0a6973502fff72343487e
Delegated to: Kalle Valo
Headers show

Commit Message

Brian Norris Jan. 12, 2018, 9:08 p.m. UTC
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>
---
 drivers/net/wireless/marvell/mwifiex/pcie.c | 2 --
 drivers/net/wireless/marvell/mwifiex/sdio.c | 2 --
 2 files changed, 4 deletions(-)

Comments

Kalle Valo Jan. 16, 2018, 4:01 p.m. UTC | #1
Brian Norris <briannorris@chromium.org> wrote:

> 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>

2 patches applied to wireless-drivers-next.git, thanks.

7e34c0d2f631 Revert "mwifiex: cancel pcie/sdio work in remove/shutdown handler"
a64e7a79dd60 mwifiex: resolve reset vs. remove()/shutdown() deadlocks
diff mbox

Patch

diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
index 23209c5cab05..f666cb2ea7e0 100644
--- a/drivers/net/wireless/marvell/mwifiex/pcie.c
+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
@@ -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);
 }
 
diff --git a/drivers/net/wireless/marvell/mwifiex/sdio.c b/drivers/net/wireless/marvell/mwifiex/sdio.c
index 248858723753..a82880132af4 100644
--- a/drivers/net/wireless/marvell/mwifiex/sdio.c
+++ b/drivers/net/wireless/marvell/mwifiex/sdio.c
@@ -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);
 }