summaryrefslogtreecommitdiffstats
path: root/net/ieee80211/ieee80211_module.c
diff options
context:
space:
mode:
authorJames Ketrenos2005-09-21 18:54:15 +0200
committerJeff Garzik2005-09-22 05:01:52 +0200
commit0ad0c3c64484b1458b51167bd3e614d8d9d070f8 (patch)
tree4ff20e24d22523603c51d9cd876ae0e5b1714531 /net/ieee80211/ieee80211_module.c
parent[PATCH] ieee80211: Fix time calculation, switching to use jiffies_to_msecs (diff)
downloadkernel-qcow2-linux-0ad0c3c64484b1458b51167bd3e614d8d9d070f8.tar.gz
kernel-qcow2-linux-0ad0c3c64484b1458b51167bd3e614d8d9d070f8.tar.xz
kernel-qcow2-linux-0ad0c3c64484b1458b51167bd3e614d8d9d070f8.zip
[PATCH] ieee80211: Fix kernel Oops when module unload
tree b69e983266840983183a00f5ac02c66d5270ca47 parent cdd6372949b76694622ed74fe36e1dd17a92eb71 author Zhu Yi <jketreno@io.(none)> 1124435425 -0500 committer James Ketrenos <jketreno@linux.intel.com> 1127312421 -0500 Fix kernel Oops when module unload. Export a new function ieee80211_crypt_quiescing from ieee80211. Device drivers call it to make the host crypto stack enter the quiescence state, which means "process existing requests, but don't accept new ones". This is usually called during a driver's host crypto data structure free (module unload) path. Signed-off-by: James Ketrenos <jketreno@linux.intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'net/ieee80211/ieee80211_module.c')
-rw-r--r--net/ieee80211/ieee80211_module.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ieee80211/ieee80211_module.c b/net/ieee80211/ieee80211_module.c
index 4b43ae1235f9..82a4fd713b28 100644
--- a/net/ieee80211/ieee80211_module.c
+++ b/net/ieee80211/ieee80211_module.c
@@ -138,6 +138,7 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
init_timer(&ieee->crypt_deinit_timer);
ieee->crypt_deinit_timer.data = (unsigned long)ieee;
ieee->crypt_deinit_timer.function = ieee80211_crypt_deinit_handler;
+ ieee->crypt_quiesced = 0;
spin_lock_init(&ieee->lock);
@@ -161,6 +162,7 @@ void free_ieee80211(struct net_device *dev)
int i;
+ ieee80211_crypt_quiescing(ieee);
del_timer_sync(&ieee->crypt_deinit_timer);
ieee80211_crypt_deinit_entries(ieee, 1);