]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.25/patches.fixes/iwl3945-fix-crash-on-rmmod.patch
Revert "Move xen patchset to new version's subdir."
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.fixes / iwl3945-fix-crash-on-rmmod.patch
diff --git a/src/patches/suse-2.6.27.25/patches.fixes/iwl3945-fix-crash-on-rmmod.patch b/src/patches/suse-2.6.27.25/patches.fixes/iwl3945-fix-crash-on-rmmod.patch
new file mode 100644 (file)
index 0000000..b9b4712
--- /dev/null
@@ -0,0 +1,41 @@
+From: Kolekar, Abhijeet <abhijeet.kolekar@intel.com>
+Subject: iwl3945: release resources before shutting down
+Patch-mainline: 2.6.30
+Reference: bnc#495816
+    
+Release resource before shutting down and notify upper stack.
+    
+Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com>
+Signed-off-by: Zhu Yi <yi.zhu@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Acked-by: Helmut Schaa <hschaa@suse.de>
+Acked-by: Jiri Benc <jbenc@suse.cz>
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
+index 38b1f90..722fc44 100644
+--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
++++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
+@@ -8105,7 +8105,12 @@ static void __devexit iwl3945_pci_remove(struct pci_dev *pdev)
+       set_bit(STATUS_EXIT_PENDING, &priv->status);
+-      iwl3945_down(priv);
++      if (priv->mac80211_registered) {
++              ieee80211_unregister_hw(priv->hw);
++              priv->mac80211_registered = 0;
++      } else {
++              iwl3945_down(priv);
++      }
+       /* make sure we flush any pending irq or
+        * tasklet for the driver
+@@ -8130,9 +8130,6 @@ static void __devexit iwl3945_pci_remove(struct pci_dev *pdev)
+       iwl3945_unset_hw_setting(priv);
+       iwl3945_clear_stations_table(priv);
+-      if (priv->mac80211_registered)
+-              ieee80211_unregister_hw(priv->hw);
+-
+       /*netif_stop_queue(dev); */
+       flush_workqueue(priv->workqueue);