From: Xinming Hu <[email protected]>

We have observed a kernel crash when system immediately suspends
after booting. There is a race between suspend and driver
initialization paths.
This patch adds hw_status checks to fix the problem

Signed-off-by: Xinming Hu <[email protected]>
Signed-off-by: Amitkumar Karwar <[email protected]>
---
 drivers/net/wireless/marvell/mwifiex/pcie.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c 
b/drivers/net/wireless/marvell/mwifiex/pcie.c
index ba9e068..376e01c 100644
--- a/drivers/net/wireless/marvell/mwifiex/pcie.c
+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
@@ -122,7 +122,8 @@ static int mwifiex_pcie_suspend(struct device *dev)
 
        if (pdev) {
                card = pci_get_drvdata(pdev);
-               if (!card || !card->adapter) {
+               if (!card || !card->adapter ||
+                   card->adapter->hw_status != MWIFIEX_HW_STATUS_READY) {
                        pr_err("Card or adapter structure is not valid\n");
                        return 0;
                }
@@ -166,7 +167,8 @@ static int mwifiex_pcie_resume(struct device *dev)
 
        if (pdev) {
                card = pci_get_drvdata(pdev);
-               if (!card || !card->adapter) {
+               if (!card || !card->adapter ||
+                   card->adapter->hw_status != MWIFIEX_HW_STATUS_READY) {
                        pr_err("Card or adapter structure is not valid\n");
                        return 0;
                }
-- 
1.9.1

Reply via email to