Browse Source

mwifiex: clean pcie ring only when device is present

Write io memory to clean PCIe buffer only when PCIe device is
present else this results into crash because of invalid memory
access.

Cc: <stable@vger.kernel.org> # 3.9+
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Avinash Patil 11 years ago
parent
commit
4f7ba43220
1 changed files with 2 additions and 1 deletions
  1. 2 1
      drivers/net/wireless/mwifiex/wmm.c

+ 2 - 1
drivers/net/wireless/mwifiex/wmm.c

@@ -559,7 +559,8 @@ mwifiex_clean_txrx(struct mwifiex_private *priv)
 	mwifiex_wmm_delete_all_ralist(priv);
 	mwifiex_wmm_delete_all_ralist(priv);
 	memcpy(tos_to_tid, ac_to_tid, sizeof(tos_to_tid));
 	memcpy(tos_to_tid, ac_to_tid, sizeof(tos_to_tid));
 
 
-	if (priv->adapter->if_ops.clean_pcie_ring)
+	if (priv->adapter->if_ops.clean_pcie_ring &&
+	    !priv->adapter->surprise_removed)
 		priv->adapter->if_ops.clean_pcie_ring(priv->adapter);
 		priv->adapter->if_ops.clean_pcie_ring(priv->adapter);
 	spin_unlock_irqrestore(&priv->wmm.ra_list_spinlock, flags);
 	spin_unlock_irqrestore(&priv->wmm.ra_list_spinlock, flags);
 }
 }