summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/pcie/trans.c')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/trans.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index 5613339..016b505 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -1950,10 +1950,19 @@ static void iwl_trans_pcie_removal_wk(struct work_struct *wk)
dev_err(&pdev->dev, "Device gone - attempting removal\n");
kobject_uevent_env(&pdev->dev.kobj, KOBJ_CHANGE, prop);
+#if LINUX_VERSION_IS_GEQ(3,14,0)
pci_lock_rescan_remove();
+#endif
pci_dev_put(pdev);
+#if LINUX_VERSION_IS_LESS(3,2,0)
+ pci_stop_bus_device(pdev);
+ pci_remove_bus_device(pdev);
+#else
pci_stop_and_remove_bus_device(pdev);
+#endif
+#if LINUX_VERSION_IS_GEQ(3,14,0)
pci_unlock_rescan_remove();
+#endif
kfree(removal);
module_put(THIS_MODULE);