summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Heim <phreak@gentoo.org>2006-10-13 12:22:10 +0000
committerChristian Heim <phreak@gentoo.org>2006-10-13 12:22:10 +0000
commit8971d0bf666a3f8ebb0edea789478cbf59de699c (patch)
tree82f004c30f3da2c470bd6282f88d4b4e845537ad /net-wireless/ieee80211
parentAdust the irssi blockers. (diff)
downloadhistorical-8971d0bf666a3f8ebb0edea789478cbf59de699c.tar.gz
historical-8971d0bf666a3f8ebb0edea789478cbf59de699c.tar.bz2
historical-8971d0bf666a3f8ebb0edea789478cbf59de699c.zip
Fixing ieee80211-1.1.13 for SMP-systems (see #150752 for reference). Thanks to Simon Koenig for reporting the issue and pointing me to the patch.
Package-Manager: portage-2.1.2_pre2-r9
Diffstat (limited to 'net-wireless/ieee80211')
-rw-r--r--net-wireless/ieee80211/ChangeLog7
-rw-r--r--net-wireless/ieee80211/Manifest26
-rw-r--r--net-wireless/ieee80211/files/ieee80211-1.1.13-tkip.patch188
-rw-r--r--net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild8
4 files changed, 213 insertions, 16 deletions
diff --git a/net-wireless/ieee80211/ChangeLog b/net-wireless/ieee80211/ChangeLog
index 35026a06c5aa..910933fa0fee 100644
--- a/net-wireless/ieee80211/ChangeLog
+++ b/net-wireless/ieee80211/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for net-wireless/ieee80211
# Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ChangeLog,v 1.39 2006/09/13 12:32:02 phreak Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ChangeLog,v 1.40 2006/10/13 12:22:10 phreak Exp $
+
+ 13 Oct 2006; Christian Heim <phreak@gentoo.org>
+ +files/ieee80211-1.1.13-tkip.patch, ieee80211-1.1.13-r1.ebuild:
+ Fixing ieee80211-1.1.13 for SMP-systems (see #150752 for reference). Thanks
+ to Simon Koenig for reporting the issue and pointing me to the patch.
*ieee80211-1.2.15 (13 Sep 2006)
diff --git a/net-wireless/ieee80211/Manifest b/net-wireless/ieee80211/Manifest
index 050fe16f4002..0115d288ad0d 100644
--- a/net-wireless/ieee80211/Manifest
+++ b/net-wireless/ieee80211/Manifest
@@ -5,6 +5,10 @@ AUX ieee80211-1.1.13-cflags.patch 1184 RMD160 ee477fc15c98048fd17ecc6982175e7e03
MD5 4f7fd86211611d66908e597267f2578f files/ieee80211-1.1.13-cflags.patch 1184
RMD160 ee477fc15c98048fd17ecc6982175e7e03edaa37 files/ieee80211-1.1.13-cflags.patch 1184
SHA256 45ac2892b2c17b68bfaa03dfda77954a260a18a05d9dc64a1e2ab57811e0d276 files/ieee80211-1.1.13-cflags.patch 1184
+AUX ieee80211-1.1.13-tkip.patch 6154 RMD160 9f368a19ab179e574729d381129800beade0b3f6 SHA1 b325d3fca854923c99bfa8a8dd4714879a634603 SHA256 a182e1beb805c506868002c9efd6d0a5a44779c7542d7d19d9b21503b13f5e16
+MD5 733be1adf0bd4b65e27769af5b40e79e files/ieee80211-1.1.13-tkip.patch 6154
+RMD160 9f368a19ab179e574729d381129800beade0b3f6 files/ieee80211-1.1.13-tkip.patch 6154
+SHA256 a182e1beb805c506868002c9efd6d0a5a44779c7542d7d19d9b21503b13f5e16 files/ieee80211-1.1.13-tkip.patch 6154
AUX ieee80211-1.1.14-smp-disconnect.patch 6206 RMD160 380cb6fb04d90b0e8cf31679e1a3a65c418f3d9f SHA1 db4e4bb54b51c5c08d3053bfbc0f68b9b30afa24 SHA256 210525f05e415b25e79ddba20bf5cc8c3ef4854f46f7650b02f27fe0eef64f9f
MD5 9a7a3438179e0997bfdb71ab71689675 files/ieee80211-1.1.14-smp-disconnect.patch 6206
RMD160 380cb6fb04d90b0e8cf31679e1a3a65c418f3d9f files/ieee80211-1.1.14-smp-disconnect.patch 6206
@@ -16,10 +20,10 @@ SHA256 2ff1047385787a6b4c7ceff3d4ca9ad13fbcaca1280f7f60e4414928a86e0c76 files/re
DIST ieee80211-1.1.13.tgz 67289 RMD160 adf594006278adc51de6e61124a99b05cfec4d08 SHA1 76c9e0c7233aacdacfc0b663dbe8d2d665b14310 SHA256 b22ce1bd9f4e3638e6b516e55e35f29103eb4ada814a6d401555957beced8afa
DIST ieee80211-1.1.14.tgz 67848 RMD160 6ddf9b4a682d01317242d8117c3263cdcc81d541 SHA1 bf171feb64e8ca3e662f8c9320886c32b5a6bed1 SHA256 77058469b94de08313f06cb5452ce9c4f2c5dce2f3e4b82228fe5aa1d3972cd0
DIST ieee80211-1.2.15.tgz 68832 RMD160 514e54eb8477a2187deb05ef212c23c5ce7094ad SHA1 a54e66ae96f66bd0d58e29431a60f5f63a6453db SHA256 89fa1c610ac7b6db3c4b6b79c220334a65f85b4011429ce3631094d268ae5668
-EBUILD ieee80211-1.1.13-r1.ebuild 2982 RMD160 80ad2b1c8c4f115363aa8baa09d689c6954abe69 SHA1 ea7554078927c88413115a14171d2ca89d87d706 SHA256 aa87fd7190568d6cf96a8c6245072856a14fe1c5bbff837064193e583cfebd97
-MD5 5144709418ed40b1e0cd64e5417ab663 ieee80211-1.1.13-r1.ebuild 2982
-RMD160 80ad2b1c8c4f115363aa8baa09d689c6954abe69 ieee80211-1.1.13-r1.ebuild 2982
-SHA256 aa87fd7190568d6cf96a8c6245072856a14fe1c5bbff837064193e583cfebd97 ieee80211-1.1.13-r1.ebuild 2982
+EBUILD ieee80211-1.1.13-r1.ebuild 2985 RMD160 e03e34949981345d62eb654d3ea07b2f44d15f50 SHA1 85e2938a9da80f85a709961131f16919314423bb SHA256 52246bbb05e0c702ec545a69bd05f83b276b03991c29350171f6342240ff52f7
+MD5 735a17ed82994f5d3b42334b6509606e ieee80211-1.1.13-r1.ebuild 2985
+RMD160 e03e34949981345d62eb654d3ea07b2f44d15f50 ieee80211-1.1.13-r1.ebuild 2985
+SHA256 52246bbb05e0c702ec545a69bd05f83b276b03991c29350171f6342240ff52f7 ieee80211-1.1.13-r1.ebuild 2985
EBUILD ieee80211-1.1.14-r1.ebuild 2999 RMD160 f9becd32d9f69b05733a4490f4f665c599747564 SHA1 7b4ec6b471cc048ef867cea251db4a8361d05760 SHA256 7c23863f271aa5ae20be4d6dbec9df8e934d08ccfa66d7e2830284f1aa6f67b1
MD5 5e0154b79c5530b0499133ff8166873a ieee80211-1.1.14-r1.ebuild 2999
RMD160 f9becd32d9f69b05733a4490f4f665c599747564 ieee80211-1.1.14-r1.ebuild 2999
@@ -32,10 +36,10 @@ EBUILD ieee80211-1.2.15.ebuild 2948 RMD160 c5cbb47b9cfbf6927ef96feef92f2ec094465
MD5 f43bb92136b5ed7a8e27682cf9feb14c ieee80211-1.2.15.ebuild 2948
RMD160 c5cbb47b9cfbf6927ef96feef92f2ec094465774 ieee80211-1.2.15.ebuild 2948
SHA256 d500bd34f968ae9caff92bd730785b73721914afbf229fef1c52a8982d916c47 ieee80211-1.2.15.ebuild 2948
-MISC ChangeLog 7595 RMD160 43aa0b879d3009d6d6f261f9bdf79d23ac5c5b98 SHA1 b5dceeab64220dbef7b0736d80bfcfe4483b924b SHA256 6ee2aaabfb858ac9c547bd0dd0cfd6a123c14bf62136d06728cd1df4d28747fd
-MD5 17df3229744c934837881c36317aab88 ChangeLog 7595
-RMD160 43aa0b879d3009d6d6f261f9bdf79d23ac5c5b98 ChangeLog 7595
-SHA256 6ee2aaabfb858ac9c547bd0dd0cfd6a123c14bf62136d06728cd1df4d28747fd ChangeLog 7595
+MISC ChangeLog 7862 RMD160 3d5afc6c25b5f9b26178595af054b787ba6d5243 SHA1 841b4891b34eb0b58cf641218f804d65ea4c21ba SHA256 4018bb3951721e2b2206f1ddb4b80db1ba04624df287933c16687a8ab1188674
+MD5 0dd51ba5ea85968284edee047bbdfc9f ChangeLog 7862
+RMD160 3d5afc6c25b5f9b26178595af054b787ba6d5243 ChangeLog 7862
+SHA256 4018bb3951721e2b2206f1ddb4b80db1ba04624df287933c16687a8ab1188674 ChangeLog 7862
MISC metadata.xml 254 RMD160 2e69b345a5604844f1c5a8256ea172c7a3cc485f SHA1 653c702fdb89577e9d15e9cbca3891e4acdba061 SHA256 9bffc4ff1cf574848699e33b09ff0f6137d6b64b69d82c7b95cafb32ee75becb
MD5 f3e68295a919220f58e91a1d3468c851 metadata.xml 254
RMD160 2e69b345a5604844f1c5a8256ea172c7a3cc485f metadata.xml 254
@@ -55,7 +59,7 @@ SHA256 4670076b2a3644bd9721e173a2caf2c78a6e7415634c1999de958582457c26f1 files/di
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
-iD8DBQFFB/pJyuNVb5qfaOYRAutAAKC4p8eHKeFb7Q0cZd9b7ISad5WkaQCgxXbA
-T+LgIujjwvKTFMLgJZBHJME=
-=dMjz
+iD8DBQFFL4T5yuNVb5qfaOYRAp5kAJ9qrgHO8UFf+Dh2kX/WLuaEs1uZZwCfW043
+d4gVODpHUmDfefBUGWRhYdQ=
+=mnhk
-----END PGP SIGNATURE-----
diff --git a/net-wireless/ieee80211/files/ieee80211-1.1.13-tkip.patch b/net-wireless/ieee80211/files/ieee80211-1.1.13-tkip.patch
new file mode 100644
index 000000000000..9f21a9e724fa
--- /dev/null
+++ b/net-wireless/ieee80211/files/ieee80211-1.1.13-tkip.patch
@@ -0,0 +1,188 @@
+Index: ieee80211-1.1.13/ieee80211_crypt_tkip.c
+===================================================================
+--- ieee80211-1.1.13.orig/ieee80211_crypt_tkip.c
++++ ieee80211-1.1.13/ieee80211_crypt_tkip.c
+@@ -53,8 +53,10 @@ struct ieee80211_tkip_data {
+
+ int key_idx;
+
+- struct crypto_tfm *tfm_arc4;
+- struct crypto_tfm *tfm_michael;
++ struct crypto_tfm *tx_tfm_arc4;
++ struct crypto_tfm *tx_tfm_michael;
++ struct crypto_tfm *rx_tfm_arc4;
++ struct crypto_tfm *rx_tfm_michael;
+
+ /* scratch buffers for virt_to_page() (crypto API) */
+ u8 rx_hdr[16], tx_hdr[16];
+@@ -86,15 +88,29 @@ static void *ieee80211_tkip_init(int key
+
+ priv->key_idx = key_idx;
+
+- priv->tfm_arc4 = crypto_alloc_tfm("arc4", 0);
+- if (priv->tfm_arc4 == NULL) {
++ priv->tx_tfm_arc4 = crypto_alloc_tfm("arc4", 0);
++ if (priv->tx_tfm_arc4 == NULL) {
+ printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate "
+ "crypto API arc4\n");
+ goto fail;
+ }
+
+- priv->tfm_michael = crypto_alloc_tfm("michael_mic", 0);
+- if (priv->tfm_michael == NULL) {
++ priv->tx_tfm_michael = crypto_alloc_tfm("michael_mic", 0);
++ if (priv->tx_tfm_michael == NULL) {
++ printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate "
++ "crypto API michael_mic\n");
++ goto fail;
++ }
++
++ priv->rx_tfm_arc4 = crypto_alloc_tfm("arc4", 0);
++ if (priv->rx_tfm_arc4 == NULL) {
++ printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate "
++ "crypto API arc4\n");
++ goto fail;
++ }
++
++ priv->rx_tfm_michael = crypto_alloc_tfm("michael_mic", 0);
++ if (priv->rx_tfm_michael == NULL) {
+ printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate "
+ "crypto API michael_mic\n");
+ goto fail;
+@@ -104,10 +120,14 @@ static void *ieee80211_tkip_init(int key
+
+ fail:
+ if (priv) {
+- if (priv->tfm_michael)
+- crypto_free_tfm(priv->tfm_michael);
+- if (priv->tfm_arc4)
+- crypto_free_tfm(priv->tfm_arc4);
++ if (priv->tx_tfm_michael)
++ crypto_free_tfm(priv->tx_tfm_michael);
++ if (priv->tx_tfm_arc4)
++ crypto_free_tfm(priv->tx_tfm_arc4);
++ if (priv->rx_tfm_michael)
++ crypto_free_tfm(priv->rx_tfm_michael);
++ if (priv->rx_tfm_arc4)
++ crypto_free_tfm(priv->rx_tfm_arc4);
+ kfree(priv);
+ }
+
+@@ -117,10 +137,14 @@ static void *ieee80211_tkip_init(int key
+ static void ieee80211_tkip_deinit(void *priv)
+ {
+ struct ieee80211_tkip_data *_priv = priv;
+- if (_priv && _priv->tfm_michael)
+- crypto_free_tfm(_priv->tfm_michael);
+- if (_priv && _priv->tfm_arc4)
+- crypto_free_tfm(_priv->tfm_arc4);
++ if (_priv && _priv->tx_tfm_michael)
++ crypto_free_tfm(_priv->tx_tfm_michael);
++ if (_priv && _priv->tx_tfm_arc4)
++ crypto_free_tfm(_priv->tx_tfm_arc4);
++ if (_priv && _priv->rx_tfm_michael)
++ crypto_free_tfm(_priv->rx_tfm_michael);
++ if (_priv && _priv->rx_tfm_arc4)
++ crypto_free_tfm(_priv->rx_tfm_arc4);
+ kfree(priv);
+ }
+
+@@ -352,11 +376,11 @@ static int ieee80211_tkip_encrypt(struct
+ icv[2] = crc >> 16;
+ icv[3] = crc >> 24;
+
+- crypto_cipher_setkey(tkey->tfm_arc4, rc4key, 16);
++ crypto_cipher_setkey(tkey->tx_tfm_arc4, rc4key, 16);
+ sg.page = virt_to_page(pos);
+ sg.offset = offset_in_page(pos);
+ sg.length = len + 4;
+- crypto_cipher_encrypt(tkey->tfm_arc4, &sg, &sg, len + 4);
++ crypto_cipher_encrypt(tkey->tx_tfm_arc4, &sg, &sg, len + 4);
+
+ return 0;
+ }
+@@ -447,11 +471,11 @@ static int ieee80211_tkip_decrypt(struct
+
+ plen = skb->len - hdr_len - 12;
+
+- crypto_cipher_setkey(tkey->tfm_arc4, rc4key, 16);
++ crypto_cipher_setkey(tkey->rx_tfm_arc4, rc4key, 16);
+ sg.page = virt_to_page(pos);
+ sg.offset = offset_in_page(pos);
+ sg.length = plen + 4;
+- crypto_cipher_decrypt(tkey->tfm_arc4, &sg, &sg, plen + 4);
++ crypto_cipher_decrypt(tkey->rx_tfm_arc4, &sg, &sg, plen + 4);
+
+ crc = ~crc32_le(~0, pos, plen);
+ icv[0] = crc;
+@@ -485,12 +509,12 @@ static int ieee80211_tkip_decrypt(struct
+ return keyidx;
+ }
+
+-static int michael_mic(struct ieee80211_tkip_data *tkey, u8 * key, u8 * hdr,
++static int michael_mic(struct crypto_tfm *tfm_michael, u8 * key, u8 * hdr,
+ u8 * data, size_t data_len, u8 * mic)
+ {
+ struct scatterlist sg[2];
+
+- if (tkey->tfm_michael == NULL) {
++ if (tfm_michael == NULL) {
+ printk(KERN_WARNING "michael_mic: tfm_michael == NULL\n");
+ return -1;
+ }
+@@ -502,10 +526,10 @@ static int michael_mic(struct ieee80211_
+ sg[1].offset = offset_in_page(data);
+ sg[1].length = data_len;
+
+- crypto_digest_init(tkey->tfm_michael);
+- crypto_digest_setkey(tkey->tfm_michael, key, 8);
+- crypto_digest_update(tkey->tfm_michael, sg, 2);
+- crypto_digest_final(tkey->tfm_michael, mic);
++ crypto_digest_init(tfm_michael);
++ crypto_digest_setkey(tfm_michael, key, 8);
++ crypto_digest_update(tfm_michael, sg, 2);
++ crypto_digest_final(tfm_michael, mic);
+
+ return 0;
+ }
+@@ -563,7 +587,7 @@ static int ieee80211_michael_mic_add(str
+
+ michael_mic_hdr(skb, tkey->tx_hdr);
+ pos = skb_put(skb, 8);
+- if (michael_mic(tkey, &tkey->key[16], tkey->tx_hdr,
++ if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr,
+ skb->data + hdr_len, skb->len - 8 - hdr_len, pos))
+ return -1;
+
+@@ -625,7 +649,7 @@ static int ieee80211_michael_mic_verify(
+ return -1;
+
+ michael_mic_hdr(skb, tkey->rx_hdr);
+- if (michael_mic(tkey, &tkey->key[24], tkey->rx_hdr,
++ if (michael_mic(tkey->rx_tfm_michael, &tkey->key[24], tkey->rx_hdr,
+ skb->data + hdr_len, skb->len - 8 - hdr_len, mic))
+ return -1;
+ if (memcmp(mic, skb->data + skb->len - 8, 8) != 0) {
+@@ -655,14 +679,18 @@ static int ieee80211_tkip_set_key(void *
+ {
+ struct ieee80211_tkip_data *tkey = priv;
+ int keyidx;
+- struct crypto_tfm *tfm = tkey->tfm_michael;
+- struct crypto_tfm *tfm2 = tkey->tfm_arc4;
++ struct crypto_tfm *tfm = tkey->tx_tfm_michael;
++ struct crypto_tfm *tfm2 = tkey->tx_tfm_arc4;
++ struct crypto_tfm *tfm3 = tkey->rx_tfm_michael;
++ struct crypto_tfm *tfm4 = tkey->rx_tfm_arc4;
+
+ keyidx = tkey->key_idx;
+ memset(tkey, 0, sizeof(*tkey));
+ tkey->key_idx = keyidx;
+- tkey->tfm_michael = tfm;
+- tkey->tfm_arc4 = tfm2;
++ tkey->tx_tfm_michael = tfm;
++ tkey->tx_tfm_arc4 = tfm2;
++ tkey->rx_tfm_michael = tfm3;
++ tkey->rx_tfm_arc4 = tfm4;
+ if (len == TKIP_KEY_LEN) {
+ memcpy(tkey->key, key, TKIP_KEY_LEN);
+ tkey->key_set = 1;
diff --git a/net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild b/net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild
index 4556ad366b50..da4dce9e4fac 100644
--- a/net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild
+++ b/net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild,v 1.2 2006/04/22 14:39:39 brix Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ieee80211-1.1.13-r1.ebuild,v 1.3 2006/10/13 12:22:10 phreak Exp $
inherit eutils linux-mod
@@ -74,13 +74,13 @@ src_unpack() {
unpack ${A}
- cd ${S}
- epatch ${FILESDIR}/${P}-cflags.patch
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-*.patch
use debug && debug="y"
sed -i \
-e "s:^\(CONFIG_IEEE80211_DEBUG\)=.*:\1=${debug}:" \
- ${S}/Makefile || die
+ "${S}"/Makefile || die
}
src_install() {