From aeb963bdfe4152baa4ffae9d5188eb812a056bfd Mon Sep 17 00:00:00 2001 From: Christian Heim Date: Wed, 6 Sep 2006 17:48:05 +0000 Subject: [PATCH] Revision bump, fixing bug #144148 (thanks to Magnus Ahlberg). Package-Manager: portage-2.1.1_rc1-r5 --- net-wireless/ieee80211/ChangeLog | 8 +- net-wireless/ieee80211/Manifest | 27 ++- .../files/digest-ieee80211-1.1.14-r1 | 3 + .../ieee80211-1.1.14-smp-disconnect.patch | 187 ++++++++++++++++++ .../ieee80211/ieee80211-1.1.14-r1.ebuild | 93 +++++++++ 5 files changed, 309 insertions(+), 9 deletions(-) create mode 100644 net-wireless/ieee80211/files/digest-ieee80211-1.1.14-r1 create mode 100644 net-wireless/ieee80211/files/ieee80211-1.1.14-smp-disconnect.patch create mode 100644 net-wireless/ieee80211/ieee80211-1.1.14-r1.ebuild diff --git a/net-wireless/ieee80211/ChangeLog b/net-wireless/ieee80211/ChangeLog index 29483f822d0c..fedc0b294766 100644 --- a/net-wireless/ieee80211/ChangeLog +++ b/net-wireless/ieee80211/ChangeLog @@ -1,6 +1,12 @@ # 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.37 2006/07/13 17:36:50 phreak Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-wireless/ieee80211/ChangeLog,v 1.38 2006/09/06 17:48:05 phreak Exp $ + +*ieee80211-1.1.14-r1 (06 Sep 2006) + + 06 Sep 2006; Christian Heim + +files/ieee80211-1.1.14-smp-disconnect.patch, +ieee80211-1.1.14-r1.ebuild: + Revision bump, fixing bug #144148 (thanks to Magnus Ahlberg). 13 Jul 2006; Christian Heim metadata.xml, +ieee80211-1.1.14.ebuild: diff --git a/net-wireless/ieee80211/Manifest b/net-wireless/ieee80211/Manifest index 3a0e575f0df1..8b261b560791 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.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 +SHA256 210525f05e415b25e79ddba20bf5cc8c3ef4854f46f7650b02f27fe0eef64f9f files/ieee80211-1.1.14-smp-disconnect.patch 6206 AUX remove-old 1460 RMD160 b7ae7fd18233a6c10cbaf877811598248b524e77 SHA1 a61fb44c10faa7da0be8be6bdf777b48694f650d SHA256 2ff1047385787a6b4c7ceff3d4ca9ad13fbcaca1280f7f60e4414928a86e0c76 MD5 1f23d886a8ac044db818e796a765ef34 files/remove-old 1460 RMD160 b7ae7fd18233a6c10cbaf877811598248b524e77 files/remove-old 1460 @@ -15,14 +19,18 @@ EBUILD ieee80211-1.1.13-r1.ebuild 2982 RMD160 80ad2b1c8c4f115363aa8baa09d689c695 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.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 +SHA256 7c23863f271aa5ae20be4d6dbec9df8e934d08ccfa66d7e2830284f1aa6f67b1 ieee80211-1.1.14-r1.ebuild 2999 EBUILD ieee80211-1.1.14.ebuild 2948 RMD160 46704b01ed52a3444fb53bd26fe7e1ff15d86a48 SHA1 ed92514cb358fd3af97dc8db7a38106cdc6e605b SHA256 68a67b1cd5f7943f9266ef92896c2af5e33d44873b3aff94e075d41f4604b4ac MD5 9ad3495889a48bbfc8164c3925638c5e ieee80211-1.1.14.ebuild 2948 RMD160 46704b01ed52a3444fb53bd26fe7e1ff15d86a48 ieee80211-1.1.14.ebuild 2948 SHA256 68a67b1cd5f7943f9266ef92896c2af5e33d44873b3aff94e075d41f4604b4ac ieee80211-1.1.14.ebuild 2948 -MISC ChangeLog 7194 RMD160 d06516948ccbe12ebebf9236713d98a49a681f57 SHA1 b85962f84ca01f02b821b132066ff0b97d200387 SHA256 cbaf74d345d65ee77b330d04607959fc9cd5cd6db9d557d03e2601b0fe9f6b39 -MD5 227848aebb3d8cada2ce5391d30ff42d ChangeLog 7194 -RMD160 d06516948ccbe12ebebf9236713d98a49a681f57 ChangeLog 7194 -SHA256 cbaf74d345d65ee77b330d04607959fc9cd5cd6db9d557d03e2601b0fe9f6b39 ChangeLog 7194 +MISC ChangeLog 7422 RMD160 cc5f65c6cf25f362688d6b11bbec3123ec18340c SHA1 08250d3b3fde83a4903ca253f0f20bd3990fc11b SHA256 b49bbbb75f7b7d28f4ccaa43d6885a27c481178e745d630069bee10d4b65f9bd +MD5 fce598b399a4c89f88ed251ed99bd9db ChangeLog 7422 +RMD160 cc5f65c6cf25f362688d6b11bbec3123ec18340c ChangeLog 7422 +SHA256 b49bbbb75f7b7d28f4ccaa43d6885a27c481178e745d630069bee10d4b65f9bd ChangeLog 7422 MISC metadata.xml 254 RMD160 2e69b345a5604844f1c5a8256ea172c7a3cc485f SHA1 653c702fdb89577e9d15e9cbca3891e4acdba061 SHA256 9bffc4ff1cf574848699e33b09ff0f6137d6b64b69d82c7b95cafb32ee75becb MD5 f3e68295a919220f58e91a1d3468c851 metadata.xml 254 RMD160 2e69b345a5604844f1c5a8256ea172c7a3cc485f metadata.xml 254 @@ -33,10 +41,13 @@ SHA256 79358f3a80f1628c57c3ff3507652a1393d077ce506fe16c5195b2fb98d243b9 files/di MD5 0d30121fa73ffe00f0501e66a3293ad7 files/digest-ieee80211-1.1.14 238 RMD160 55bb5d15228be22213a5e484ddcd693c6e0e17c7 files/digest-ieee80211-1.1.14 238 SHA256 4411297c89d5ab9d2ee887286eb7d7e57d9c47df17db5248382fd6ce772274b4 files/digest-ieee80211-1.1.14 238 +MD5 0d30121fa73ffe00f0501e66a3293ad7 files/digest-ieee80211-1.1.14-r1 238 +RMD160 55bb5d15228be22213a5e484ddcd693c6e0e17c7 files/digest-ieee80211-1.1.14-r1 238 +SHA256 4411297c89d5ab9d2ee887286eb7d7e57d9c47df17db5248382fd6ce772274b4 files/digest-ieee80211-1.1.14-r1 238 -----BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.4 (GNU/Linux) +Version: GnuPG v1.4.5 (GNU/Linux) -iD8DBQFEtoanflZ8QqxhrsMRAjlDAJ0Xy7dWCrXZssMYQloZOc2CWapb8wCgvDD8 -UYEDhJOxVlQ9Qp6HclF0MYk= -=xjCg +iD8DBQFE/wndyuNVb5qfaOYRAsdxAKCpJnPxwf+HD3dtJz7ktWFaJsL9swCgpMe4 +vcjR79eLBqFjKEx+JuL1JBk= +=JaF7 -----END PGP SIGNATURE----- diff --git a/net-wireless/ieee80211/files/digest-ieee80211-1.1.14-r1 b/net-wireless/ieee80211/files/digest-ieee80211-1.1.14-r1 new file mode 100644 index 000000000000..56991c20ba1d --- /dev/null +++ b/net-wireless/ieee80211/files/digest-ieee80211-1.1.14-r1 @@ -0,0 +1,3 @@ +MD5 cd380abe9bd25fbf2c205c6b20414e38 ieee80211-1.1.14.tgz 67848 +RMD160 6ddf9b4a682d01317242d8117c3263cdcc81d541 ieee80211-1.1.14.tgz 67848 +SHA256 77058469b94de08313f06cb5452ce9c4f2c5dce2f3e4b82228fe5aa1d3972cd0 ieee80211-1.1.14.tgz 67848 diff --git a/net-wireless/ieee80211/files/ieee80211-1.1.14-smp-disconnect.patch b/net-wireless/ieee80211/files/ieee80211-1.1.14-smp-disconnect.patch new file mode 100644 index 000000000000..125e9da75091 --- /dev/null +++ b/net-wireless/ieee80211/files/ieee80211-1.1.14-smp-disconnect.patch @@ -0,0 +1,187 @@ +diff -urp ieee80211-1.1.14/ieee80211_crypt_tkip.c ieee80211-1.1.14-tkip/ieee80211_crypt_tkip.c +--- ieee80211-1.1.14/ieee80211_crypt_tkip.c 2006-06-12 14:08:02.000000000 +0800 ++++ ieee80211-1.1.14-tkip/ieee80211_crypt_tkip.c 2006-08-01 11:19:03.000000000 +0800 +@@ -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.14-r1.ebuild b/net-wireless/ieee80211/ieee80211-1.1.14-r1.ebuild new file mode 100644 index 000000000000..8ac7098a3eef --- /dev/null +++ b/net-wireless/ieee80211/ieee80211-1.1.14-r1.ebuild @@ -0,0 +1,93 @@ +# 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.14-r1.ebuild,v 1.1 2006/09/06 17:48:05 phreak Exp $ + +inherit eutils linux-mod + +# The following works with both pre-releases and releases +MY_P=${P/_/-} +S=${WORKDIR}/${MY_P} + +DESCRIPTION="Generic IEEE 802.11 network subsystem for Linux" +HOMEPAGE="http://ieee80211.sourceforge.net" +SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tgz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" + +DEPEND="" + +IUSE="debug" +BUILD_TARGETS="modules" +MODULE_NAMES="ieee80211(net/ieee80211:) + ieee80211_crypt(net/ieee80211:) + ieee80211_crypt_wep(net/ieee80211:) + ieee80211_crypt_ccmp(net/ieee80211:) + ieee80211_crypt_tkip(net/ieee80211:)" + +CONFIG_CHECK="NET_RADIO CRYPTO_ARC4 CRYPTO_MICHAEL_MIC CRC32 !IEEE80211" +ERROR_NET_RADIO="${P} requires support for Wireless LAN drivers (non-hamradio) & Wireless Extensions (CONFIG_NET_RADIO)." +ERROR_CRYPTO_ARC4="${P} requires support for ARC4 cipher algorithm (CONFIG_CRYPTO_ARC4)." +ERROR_CRYPTO_MICHAEL_MIC="${P} requires support for Michael MIC keyed digest algorithm (CONFIG_CRYPTO_MICHAEL_MIC)." +ERROR_CRC32="${P} requires support for CRC32 functions (CONFIG_CRC32)." +ERROR_IEEE80211="${P} requires the in-kernel version of the IEEE802.11 subsystem to be disabled (CONFIG_IEEE80211)" + +pkg_setup() { + linux-mod_pkg_setup + + if kernel_is 2 4; then + die "${P} does not support building against kernel 2.4.x" + fi + + if [[ -f ${KV_DIR}/include/net/ieee80211.h ]] || \ + [[ -f ${KV_OUT_DIR}/include/config/ieee80211.h ]] || \ + egrep -q "^#(un)?def.*(CONFIG_IEEE80211.*)" ${KV_OUT_DIR}/include/linux/autoconf.h; then + eerror + eerror "Your kernel source contains an incompatible version of the" + eerror "ieee80211 subsystem, which needs to be removed before" + eerror "${P} can be installed. This can be accomplished by running:" + eerror + eerror " # /bin/sh ${FILESDIR}/remove-old ${KV_DIR}" + if [ "${KV_DIR}" != "${KV_OUT_DIR}" ]; then + eerror " # /bin/sh ${FILESDIR}/remove-old ${KV_OUT_DIR}" + fi + eerror + eerror "Please note that this will make it impossible to use some of the" + eerror "in-kernel IEEE 802.11 wireless LAN drivers (eg. orinoco)." + eerror + die "Incompatible in-kernel ieee80211 subsystem detected" + fi + + if ! (linux_chkconfig_present CRYPTO_AES_586 || \ + linux_chkconfig_present CRYPTO_AES_X86_64 || \ + linux_chkconfig_present CRYPTO_AES); then + eerror "${P} requires support for AES cipher algorithms." + die "CONFIG_CRYPTO_AES{_586,_X86_64} support not detected" + fi + + BUILD_PARAMS="KSRC=${KV_DIR} KSRC_OUTPUT=${KV_OUT_DIR}" +} + +src_unpack() { + local debug="n" + + unpack ${A} + + cd "${S}" + epatch "${FILESDIR}/${P}-smp-disconnect.patch" + + use debug && debug="y" + sed -i \ + -e "s:^\(CONFIG_IEEE80211_DEBUG\)=.*:\1=${debug}:" \ + "${S}"/Makefile || die +} + +src_install() { + linux-mod_src_install + + insinto /usr/include/net + doins net/*.h + + dodoc CHANGES +} -- 2.26.2