diff options
author | James Ketrenos <jketreno@linux.intel.com> | 2005-09-21 12:53:43 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-21 23:01:52 -0400 |
commit | 20d64713ae71c0b0aa06084acbef2244021baaca (patch) | |
tree | f9af562b0bc70f7f75d0195aacf155fd3ec6628a /net/ieee80211/ieee80211_wx.c | |
parent | 4ca5253d573d7b3785dbb2f123f948fdca6ee235 (diff) |
[PATCH] ieee80211: Fixed a kernel oops on module unload
tree 367069f24fc38b4aa910e86ff40094d2078d8aa7
parent a33a1982012e9070736e3717231714dc9892303b
author James Ketrenos <jketreno@linux.intel.com> 1124430800 -0500
committer James Ketrenos <jketreno@linux.intel.com> 1127310571 -0500
Fixed a kernel oops on module unload by adding spin lock protection to
ieee80211's crypt handlers (thanks to Zhu Yi)
Modified scan result logic to report WPA and RSN IEs if set (vs.being
based on wpa_enabled)
Added ieee80211_device as the first parameter to the crypt init()
method. TKIP modified to use that structure for determining whether to
countermeasures are active.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'net/ieee80211/ieee80211_wx.c')
-rw-r--r-- | net/ieee80211/ieee80211_wx.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c index 04f0897b0653..fc4e1377aba7 100644 --- a/net/ieee80211/ieee80211_wx.c +++ b/net/ieee80211/ieee80211_wx.c | |||
@@ -182,7 +182,7 @@ static inline char *ipw2100_translate_scan(struct ieee80211_device *ieee, | |||
182 | if (iwe.u.data.length) | 182 | if (iwe.u.data.length) |
183 | start = iwe_stream_add_point(start, stop, &iwe, custom); | 183 | start = iwe_stream_add_point(start, stop, &iwe, custom); |
184 | 184 | ||
185 | if (ieee->wpa_enabled && network->wpa_ie_len) { | 185 | if (network->wpa_ie_len) { |
186 | char buf[MAX_WPA_IE_LEN * 2 + 30]; | 186 | char buf[MAX_WPA_IE_LEN * 2 + 30]; |
187 | 187 | ||
188 | u8 *p = buf; | 188 | u8 *p = buf; |
@@ -197,7 +197,7 @@ static inline char *ipw2100_translate_scan(struct ieee80211_device *ieee, | |||
197 | start = iwe_stream_add_point(start, stop, &iwe, buf); | 197 | start = iwe_stream_add_point(start, stop, &iwe, buf); |
198 | } | 198 | } |
199 | 199 | ||
200 | if (ieee->wpa_enabled && network->rsn_ie_len) { | 200 | if (network->rsn_ie_len) { |
201 | char buf[MAX_WPA_IE_LEN * 2 + 30]; | 201 | char buf[MAX_WPA_IE_LEN * 2 + 30]; |
202 | 202 | ||
203 | u8 *p = buf; | 203 | u8 *p = buf; |
@@ -351,7 +351,7 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee, | |||
351 | } | 351 | } |
352 | 352 | ||
353 | if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) | 353 | if (new_crypt->ops && try_module_get(new_crypt->ops->owner)) |
354 | new_crypt->priv = new_crypt->ops->init(key); | 354 | new_crypt->priv = new_crypt->ops->init(ieee, key); |
355 | 355 | ||
356 | if (!new_crypt->ops || !new_crypt->priv) { | 356 | if (!new_crypt->ops || !new_crypt->priv) { |
357 | kfree(new_crypt); | 357 | kfree(new_crypt); |