aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDavid Spinadel <david.spinadel@intel.com>2012-08-12 01:14:04 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-09-10 13:11:53 -0400
commitee7d737c45440062320c16bc7ad7bb5c9fe8888e (patch)
treead83c629957e422bc3b61526179e5e928dda8d9a /drivers
parent8b61fa242ce56838ce1c41db3692b64b4c344776 (diff)
iwlwifi: stop interrupts before stopping device
If an RX interrupt is signalled after or during apm_stop we may try to access the peripherals which are already down. Prevent this by disabling interrupts first. Signed-off-by: David Spinadel <david.spinadel@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/trans.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
index 913ad46a6686..7da075f5bffa 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -1453,6 +1453,10 @@ static void iwl_trans_pcie_stop_hw(struct iwl_trans *trans,
1453 bool hw_rfkill; 1453 bool hw_rfkill;
1454 unsigned long flags; 1454 unsigned long flags;
1455 1455
1456 spin_lock_irqsave(&trans_pcie->irq_lock, flags);
1457 iwl_disable_interrupts(trans);
1458 spin_unlock_irqrestore(&trans_pcie->irq_lock, flags);
1459
1456 iwl_apm_stop(trans); 1460 iwl_apm_stop(trans);
1457 1461
1458 spin_lock_irqsave(&trans_pcie->irq_lock, flags); 1462 spin_lock_irqsave(&trans_pcie->irq_lock, flags);