From: Greg Kroah-Hartman Date: Mon, 24 May 2010 22:00:53 +0000 (-0700) Subject: .32 patches X-Git-Tag: v2.6.27.47~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e32284e72b265e52c5f86df8ebd6eaea5fb6e48a;p=thirdparty%2Fkernel%2Fstable-queue.git .32 patches --- diff --git a/queue-2.6.32/cachefiles-fix-error-handling-in-cachefiles_determine_cache_security.patch b/queue-2.6.32/cachefiles-fix-error-handling-in-cachefiles_determine_cache_security.patch new file mode 100644 index 00000000000..b04863c3cc3 --- /dev/null +++ b/queue-2.6.32/cachefiles-fix-error-handling-in-cachefiles_determine_cache_security.patch @@ -0,0 +1,45 @@ +From 7ac512aa8237c43331ffaf77a4fd8b8d684819ba Mon Sep 17 00:00:00 2001 +From: David Howells +Date: Wed, 12 May 2010 15:34:03 +0100 +Subject: CacheFiles: Fix error handling in cachefiles_determine_cache_security() + +From: David Howells + +commit 7ac512aa8237c43331ffaf77a4fd8b8d684819ba upstream. + +cachefiles_determine_cache_security() is expected to return with a +security override in place. However, if set_create_files_as() fails, we +fail to do this. In this case, we should just reinstate the security +override that was set by the caller. + +Furthermore, if set_create_files_as() fails, we should dispose of the +new credentials we were in the process of creating. + +Signed-off-by: David Howells +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cachefiles/security.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/fs/cachefiles/security.c ++++ b/fs/cachefiles/security.c +@@ -77,6 +77,8 @@ static int cachefiles_check_cache_dir(st + /* + * check the security details of the on-disk cache + * - must be called with security override in force ++ * - must return with a security override in force - even in the case of an ++ * error + */ + int cachefiles_determine_cache_security(struct cachefiles_cache *cache, + struct dentry *root, +@@ -99,6 +101,8 @@ int cachefiles_determine_cache_security( + * which create files */ + ret = set_create_files_as(new, root->d_inode); + if (ret < 0) { ++ abort_creds(new); ++ cachefiles_begin_secure(cache, _saved_cred); + _leave(" = %d [cfa]", ret); + return ret; + } diff --git a/queue-2.6.32/crypto-authenc-add-einprogress-check.patch b/queue-2.6.32/crypto-authenc-add-einprogress-check.patch new file mode 100644 index 00000000000..536655aba94 --- /dev/null +++ b/queue-2.6.32/crypto-authenc-add-einprogress-check.patch @@ -0,0 +1,88 @@ +From 180ce7e81030e1ef763d58f97f9ab840ff57d848 Mon Sep 17 00:00:00 2001 +From: Herbert Xu +Date: Mon, 26 Apr 2010 09:14:05 +0800 +Subject: crypto: authenc - Add EINPROGRESS check + +From: Herbert Xu + +commit 180ce7e81030e1ef763d58f97f9ab840ff57d848 upstream. + +When Steffen originally wrote the authenc async hash patch, he +correctly had EINPROGRESS checks in place so that we did not invoke +the original completion handler with it. + +Unfortuantely I told him to remove it before the patch was applied. + +As only MAY_BACKLOG request completion handlers are required to +handle EINPROGRESS completions, those checks are really needed. + +This patch restores them. + +Reported-by: Sebastian Andrzej Siewior +Signed-off-by: Herbert Xu +Signed-off-by: Greg Kroah-Hartman + +--- + crypto/authenc.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +--- a/crypto/authenc.c ++++ b/crypto/authenc.c +@@ -46,6 +46,12 @@ struct authenc_request_ctx { + char tail[]; + }; + ++static void authenc_request_complete(struct aead_request *req, int err) ++{ ++ if (err != -EINPROGRESS) ++ aead_request_complete(req, err); ++} ++ + static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key, + unsigned int keylen) + { +@@ -142,7 +148,7 @@ static void authenc_geniv_ahash_update_d + crypto_aead_authsize(authenc), 1); + + out: +- aead_request_complete(req, err); ++ authenc_request_complete(req, err); + } + + static void authenc_geniv_ahash_done(struct crypto_async_request *areq, int err) +@@ -208,7 +214,7 @@ static void authenc_verify_ahash_update_ + err = crypto_ablkcipher_decrypt(abreq); + + out: +- aead_request_complete(req, err); ++ authenc_request_complete(req, err); + } + + static void authenc_verify_ahash_done(struct crypto_async_request *areq, +@@ -245,7 +251,7 @@ static void authenc_verify_ahash_done(st + err = crypto_ablkcipher_decrypt(abreq); + + out: +- aead_request_complete(req, err); ++ authenc_request_complete(req, err); + } + + static u8 *crypto_authenc_ahash_fb(struct aead_request *req, unsigned int flags) +@@ -379,7 +385,7 @@ static void crypto_authenc_encrypt_done( + err = crypto_authenc_genicv(areq, iv, 0); + } + +- aead_request_complete(areq, err); ++ authenc_request_complete(areq, err); + } + + static int crypto_authenc_encrypt(struct aead_request *req) +@@ -418,7 +424,7 @@ static void crypto_authenc_givencrypt_do + err = crypto_authenc_genicv(areq, greq->giv, 0); + } + +- aead_request_complete(areq, err); ++ authenc_request_complete(areq, err); + } + + static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req) diff --git a/queue-2.6.32/iwlwifi-clear-all-the-stop_queue-flag-after-load-firmware.patch b/queue-2.6.32/iwlwifi-clear-all-the-stop_queue-flag-after-load-firmware.patch new file mode 100644 index 00000000000..46a3fe8b978 --- /dev/null +++ b/queue-2.6.32/iwlwifi-clear-all-the-stop_queue-flag-after-load-firmware.patch @@ -0,0 +1,49 @@ +From a9e10fb9b1c6ad16e73cf2656951fce3a817611e Mon Sep 17 00:00:00 2001 +From: Wey-Yi Guy +Date: Tue, 9 Feb 2010 08:14:11 -0800 +Subject: iwlwifi: clear all the stop_queue flag after load firmware + +From: Wey-Yi Guy + +commit a9e10fb9b1c6ad16e73cf2656951fce3a817611e upstream. + +All the queues are awake and ready to use after loading firmware, +for firmware reload case, if any queues was stopped before +reload, mac80211 will wake those queues after restart hardware, so make +sure all the flag used to keep track of the queue status are +reset correctly. + +Signed-off-by: Wey-Yi Guy +Signed-off-by: Reinette Chatre +Signed-off-by: Greg Kroah-Hartman + +--- a/drivers/net/wireless/iwlwifi/iwl-4965.c ++++ b/drivers/net/wireless/iwlwifi/iwl-4965.c +@@ -581,6 +581,11 @@ static int iwl4965_alive_notify(struct iwl_priv *priv) + + iwl4965_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0); + ++ /* make sure all queue are not stopped */ ++ memset(&priv->queue_stopped[0], 0, sizeof(priv->queue_stopped)); ++ for (i = 0; i < 4; i++) ++ atomic_set(&priv->queue_stop_count[i], 0); ++ + /* reset to 0 to enable all the queue first */ + priv->txq_ctx_active_msk = 0; + /* Map each Tx/cmd queue to its corresponding fifo */ +diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c +index a7fa1ad..94fc836 100644 +--- a/drivers/net/wireless/iwlwifi/iwl-5000.c ++++ b/drivers/net/wireless/iwlwifi/iwl-5000.c +@@ -648,6 +648,11 @@ int iwl5000_alive_notify(struct iwl_priv *priv) + + iwl5000_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0); + ++ /* make sure all queue are not stopped */ ++ memset(&priv->queue_stopped[0], 0, sizeof(priv->queue_stopped)); ++ for (i = 0; i < 4; i++) ++ atomic_set(&priv->queue_stop_count[i], 0); ++ + /* reset to 0 to enable all the queue first */ + priv->txq_ctx_active_msk = 0; + /* map qos queues to fifos one-to-one */ diff --git a/queue-2.6.32/megaraid_sas-fix-for-32bit-apps.patch b/queue-2.6.32/megaraid_sas-fix-for-32bit-apps.patch new file mode 100644 index 00000000000..854df3094cb --- /dev/null +++ b/queue-2.6.32/megaraid_sas-fix-for-32bit-apps.patch @@ -0,0 +1,69 @@ +From b3dc1a212e5167984616445990c76056034f8eeb Mon Sep 17 00:00:00 2001 +From: Tomas Henzl +Date: Thu, 11 Feb 2010 18:01:50 +0100 +Subject: [SCSI] megaraid_sas: fix for 32bit apps + +From: Tomas Henzl + +commit b3dc1a212e5167984616445990c76056034f8eeb upstream. + +It looks like this patch - + +commit 7b2519afa1abd1b9f63aa1e90879307842422dae +Author: Yang, Bo +Date: Tue Oct 6 14:52:20 2009 -0600 + + [SCSI] megaraid_sas: fix 64 bit sense pointer truncation + +has caused a problem for 32bit programs with 64bit os - + +http://bugzilla.kernel.org/show_bug.cgi?id=15001 + +fix by converting the user space 32bit pointer to a 64 bit one when +needed. + +[jejb: fix up some 64 bit warnings] +Signed-off-by: Tomas Henzl +Cc: Bo Yang +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/megaraid/megaraid_sas.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/megaraid/megaraid_sas.c ++++ b/drivers/scsi/megaraid/megaraid_sas.c +@@ -3282,6 +3282,7 @@ static int megasas_mgmt_compat_ioctl_fw( + compat_alloc_user_space(sizeof(struct megasas_iocpacket)); + int i; + int error = 0; ++ compat_uptr_t ptr; + + if (clear_user(ioc, sizeof(*ioc))) + return -EFAULT; +@@ -3294,9 +3295,22 @@ static int megasas_mgmt_compat_ioctl_fw( + copy_in_user(&ioc->sge_count, &cioc->sge_count, sizeof(u32))) + return -EFAULT; + +- for (i = 0; i < MAX_IOCTL_SGE; i++) { +- compat_uptr_t ptr; ++ /* ++ * The sense_ptr is used in megasas_mgmt_fw_ioctl only when ++ * sense_len is not null, so prepare the 64bit value under ++ * the same condition. ++ */ ++ if (ioc->sense_len) { ++ void __user **sense_ioc_ptr = ++ (void __user **)(ioc->frame.raw + ioc->sense_off); ++ compat_uptr_t *sense_cioc_ptr = ++ (compat_uptr_t *)(cioc->frame.raw + cioc->sense_off); ++ if (get_user(ptr, sense_cioc_ptr) || ++ put_user(compat_ptr(ptr), sense_ioc_ptr)) ++ return -EFAULT; ++ } + ++ for (i = 0; i < MAX_IOCTL_SGE; i++) { + if (get_user(ptr, &cioc->sgl[i].iov_base) || + put_user(compat_ptr(ptr), &ioc->sgl[i].iov_base) || + copy_in_user(&ioc->sgl[i].iov_len, diff --git a/queue-2.6.32/mmap_min_addr-check-cap_sys_rawio-only-for-write.patch b/queue-2.6.32/mmap_min_addr-check-cap_sys_rawio-only-for-write.patch new file mode 100644 index 00000000000..f46e2ce83f6 --- /dev/null +++ b/queue-2.6.32/mmap_min_addr-check-cap_sys_rawio-only-for-write.patch @@ -0,0 +1,43 @@ +From 4ae69e6b718589abe97c9625ccbb1e0bc95a8c0e Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Thu, 22 Apr 2010 12:19:17 -0700 +Subject: mmap_min_addr check CAP_SYS_RAWIO only for write + +From: Kees Cook + +commit 4ae69e6b718589abe97c9625ccbb1e0bc95a8c0e upstream. + +Redirecting directly to lsm, here's the patch discussed on lkml: +http://lkml.org/lkml/2010/4/22/219 + +The mmap_min_addr value is useful information for an admin to see without +being root ("is my system vulnerable to kernel NULL pointer attacks?") and +its setting is trivially easy for an attacker to determine by calling +mmap() in PAGE_SIZE increments starting at 0, so trying to keep it private +has no value. + +Only require CAP_SYS_RAWIO if changing the value, not reading it. + +Comment from Serge : + + Me, I like to write my passwords with light blue pen on dark blue + paper, pasted on my window - if you're going to get my password, you're + gonna get a headache. + +Signed-off-by: Kees Cook +Acked-by: Serge Hallyn +Signed-off-by: James Morris +(cherry picked from commit 822cceec7248013821d655545ea45d1c6a9d15b3) +Signed-off-by: Greg Kroah-Hartman + +--- a/security/min_addr.c ++++ b/security/min_addr.c +@@ -33,7 +33,7 @@ int mmap_min_addr_handler(struct ctl_table *table, int write, + { + int ret; + +- if (!capable(CAP_SYS_RAWIO)) ++ if (write && !capable(CAP_SYS_RAWIO)) + return -EPERM; + + ret = proc_doulongvec_minmax(table, write, buffer, lenp, ppos); diff --git a/queue-2.6.32/nilfs2-fix-sync-silent-failure.patch b/queue-2.6.32/nilfs2-fix-sync-silent-failure.patch new file mode 100644 index 00000000000..0464d486100 --- /dev/null +++ b/queue-2.6.32/nilfs2-fix-sync-silent-failure.patch @@ -0,0 +1,51 @@ +From 973bec34bfc1bc2465646181653d67f767d418c8 Mon Sep 17 00:00:00 2001 +From: Ryusuke Konishi +Date: Mon, 3 May 2010 21:00:48 +0900 +Subject: nilfs2: fix sync silent failure + +From: Ryusuke Konishi + +commit 973bec34bfc1bc2465646181653d67f767d418c8 upstream. + +As of 32a88aa1, __sync_filesystem() will return 0 if s_bdi is not set. +And nilfs does not set s_bdi anywhere. I noticed this problem by the +warning introduced by the recent commit 5129a469 ("Catch filesystem +lacking s_bdi"). + + WARNING: at fs/super.c:959 vfs_kern_mount+0xc5/0x14e() + Hardware name: PowerEdge 2850 + Modules linked in: nilfs2 loop tpm_tis tpm tpm_bios video shpchp pci_hotplug output dcdbas + Pid: 3773, comm: mount.nilfs2 Not tainted 2.6.34-rc6-debug #38 + Call Trace: + [] warn_slowpath_common+0x60/0x90 + [] warn_slowpath_null+0xd/0x10 + [] vfs_kern_mount+0xc5/0x14e + [] do_kern_mount+0x32/0xbd + [] do_mount+0x671/0x6d0 + [] ? __get_free_pages+0x1f/0x21 + [] ? copy_mount_options+0x2b/0xe2 + [] ? strndup_user+0x48/0x67 + [] sys_mount+0x61/0x8f + [] sysenter_do_call+0x12/0x32 + +This ensures to set s_bdi for nilfs and fixes the sync silent failure. + +Signed-off-by: Ryusuke Konishi +Acked-by: Jens Axboe +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nilfs2/super.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/nilfs2/super.c ++++ b/fs/nilfs2/super.c +@@ -781,6 +781,7 @@ nilfs_fill_super(struct super_block *sb, + sb->s_export_op = &nilfs_export_ops; + sb->s_root = NULL; + sb->s_time_gran = 1; ++ sb->s_bdi = nilfs->ns_bdi; + + if (!nilfs_loaded(nilfs)) { + err = load_nilfs(nilfs, sbi); diff --git a/queue-2.6.32/p54-disable-channels-with-incomplete-calibration-data-sets.patch b/queue-2.6.32/p54-disable-channels-with-incomplete-calibration-data-sets.patch new file mode 100644 index 00000000000..3fa06f8c13f --- /dev/null +++ b/queue-2.6.32/p54-disable-channels-with-incomplete-calibration-data-sets.patch @@ -0,0 +1,109 @@ +From 93a59d7527147e3656664aa3179f8d19de256081 Mon Sep 17 00:00:00 2001 +From: Christian Lamparter +Date: Sat, 31 Oct 2009 22:59:27 +0100 +Subject: p54: disable channels with incomplete calibration data sets + +From: Christian Lamparter + +commit 93a59d7527147e3656664aa3179f8d19de256081 upstream. + +James Grossmann [1] reported that p54 spews out confusing +messages instead of preventing the mayhem from happening. + +the reason is that "p54: generate channel list dynamically" +is not perfect. It didn't discard incomplete channel data +sets and therefore p54 advertised to support them as well. + +[1]: http://marc.info/?l=linux-wireless&m=125699830215890 + +Cc: Larry Finger +Reported-by: James Grossmann +Signed-off-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/p54/eeprom.c | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +--- a/drivers/net/wireless/p54/eeprom.c ++++ b/drivers/net/wireless/p54/eeprom.c +@@ -126,7 +126,7 @@ static int p54_generate_band(struct ieee + int ret = -ENOMEM; + + if ((!list->entries) || (!list->band_channel_num[band])) +- return 0; ++ return -EINVAL; + + tmp = kzalloc(sizeof(*tmp), GFP_KERNEL); + if (!tmp) +@@ -158,6 +158,7 @@ static int p54_generate_band(struct ieee + (list->channels[i].data & CHAN_HAS_CURVE ? "" : + " [curve data]"), + list->channels[i].index, list->channels[i].freq); ++ continue; + } + + tmp->channels[j].band = list->channels[i].band; +@@ -165,7 +166,16 @@ static int p54_generate_band(struct ieee + j++; + } + +- tmp->n_channels = list->band_channel_num[band]; ++ if (j == 0) { ++ printk(KERN_ERR "%s: Disabling totally damaged %s band.\n", ++ wiphy_name(dev->wiphy), (band == IEEE80211_BAND_2GHZ) ? ++ "2 GHz" : "5 GHz"); ++ ++ ret = -ENODATA; ++ goto err_out; ++ } ++ ++ tmp->n_channels = j; + old = priv->band_table[band]; + priv->band_table[band] = tmp; + if (old) { +@@ -228,13 +238,13 @@ static int p54_generate_channel_lists(st + struct p54_common *priv = dev->priv; + struct p54_channel_list *list; + unsigned int i, j, max_channel_num; +- int ret = -ENOMEM; ++ int ret = 0; + u16 freq; + + if ((priv->iq_autocal_len != priv->curve_data->entries) || + (priv->iq_autocal_len != priv->output_limit->entries)) +- printk(KERN_ERR "%s: EEPROM is damaged... you may not be able" +- "to use all channels with this device.\n", ++ printk(KERN_ERR "%s: Unsupported or damaged EEPROM detected. " ++ "You may not be able to use all channels.\n", + wiphy_name(dev->wiphy)); + + max_channel_num = max_t(unsigned int, priv->output_limit->entries, +@@ -243,8 +253,10 @@ static int p54_generate_channel_lists(st + priv->curve_data->entries); + + list = kzalloc(sizeof(*list), GFP_KERNEL); +- if (!list) ++ if (!list) { ++ ret = -ENOMEM; + goto free; ++ } + + list->max_entries = max_channel_num; + list->channels = kzalloc(sizeof(struct p54_channel_entry) * +@@ -282,13 +294,8 @@ static int p54_generate_channel_lists(st + p54_compare_channels, NULL); + + for (i = 0, j = 0; i < IEEE80211_NUM_BANDS; i++) { +- if (list->band_channel_num[i]) { +- ret = p54_generate_band(dev, list, i); +- if (ret) +- goto free; +- ++ if (p54_generate_band(dev, list, i) == 0) + j++; +- } + } + if (j == 0) { + /* no useable band available. */ diff --git a/queue-2.6.32/revert-ath9k-fix-lockdep-warning-when-unloading-module-on-stable-kernels.patch b/queue-2.6.32/revert-ath9k-fix-lockdep-warning-when-unloading-module-on-stable-kernels.patch new file mode 100644 index 00000000000..e2555c7386e --- /dev/null +++ b/queue-2.6.32/revert-ath9k-fix-lockdep-warning-when-unloading-module-on-stable-kernels.patch @@ -0,0 +1,145 @@ +From lrodriguez@atheros.com Mon May 24 14:51:15 2010 +From: "Luis R. Rodriguez" +Date: Wed, 19 May 2010 17:33:49 -0400 +Subject: Revert "ath9k: fix lockdep warning when unloading module" on stable kernels +To: greg@kroah.com, stable@kernel.org +Cc: "Luis R. Rodriguez" , Ming Lei , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, "John W. Linville" , Johannes Berg +Message-ID: <1274304829-14367-1-git-send-email-lrodriguez@atheros.com> + + +Johannes' patch 34e8950 titled: + + mac80211: allow station add/remove to sleep + +changed the way mac80211 adds and removes peers. The new +sta_add() / sta_remove() callbacks allowed the driver callbacks +to sleep. Johannes also ported ath9k to use sta_add() / sta_remove() +via the patch 4ca7786 titled: + + ath9k: convert to new station add/remove callbacks + +but this patch forgot to address a change in locking issue which +Ming Lei eventually found on his 2.6.33-wl #12 build. The 2.6.33-wl +build includes code for the 802.11 subsystem for 2.6.34 though so did +already have the above two patches (ath9k_sta_remove() on his trace), +the 2.6.33 kernel did not however have these two patches. Ming eventually +cured his lockdep warnign via the patch a9f042c titled: + + ath9k: fix lockdep warning when unloading module + +This went in to 2.6.34 and although it was not marked as a stable +fix it did get trickled down and applied on both 2.6.33 and 2.6.32. + +In review, the culprits: + + mac80211: allow station add/remove to sleep +git describe --contains 34e895075e21be3e21e71d6317440d1ee7969ad0 +v2.6.34-rc1~233^2~49^2~107 + + ath9k: convert to new station add/remove callbacks +git describe --contains 4ca778605cfec53d8a689f0b57babb93b030c784 +v2.6.34-rc1~233^2~49^2~10 + + ath9k: fix lockdep warning when unloading module + +This last one trickled down to 2.6.33 (OK), 2.6.33 (invalid) and 2.6.32 (invalid). + +git describe --contains a9f042cbe5284f34ccff15f3084477e11b39b17b +v2.6.34-rc2~48^2~77^2~7 +git describe --contains 0524bcfa80f1fffb4e1fe18a0a28900869a58a7c +v2.6.33.2~125 +git describe --contains 0dcc9985f34aef3c60bffab3dfc7f7ba3748f35a +v2.6.32.11~79 + +The patch titled "ath9k: fix lockdep warning when unloading module" +should be reverted on both 2.6.33 and 2.6.32 as it is invalid and +actually ended up causing the following warning: + +ADDRCONF(NETDEV_CHANGE): wlan31: link becomes ready +phy0: WMM queue=2 aci=0 acm=0 aifs=3 cWmin=15 cWmax=1023 txop=0 +phy0: WMM queue=3 aci=1 acm=0 aifs=7 cWmin=15 cWmax=1023 txop=0 +phy0: WMM queue=1 aci=2 acm=0 aifs=2 cWmin=7 cWmax=15 txop=94 +phy0: WMM queue=0 aci=3 acm=0 aifs=2 cWmin=3 cWmax=7 txop=47 +phy0: device now idle +------------[ cut here ]------------ +WARNING: at kernel/softirq.c:143 local_bh_enable_ip+0x7b/0xa0() +Hardware name: 7660A14 +Modules linked in: ath9k(-) mac80211 ath cfg80211 +Pid: 2003, comm: rmmod Not tainted 2.6.32.11 #6 +Call Trace: + [] warn_slowpath_common+0x78/0xb0 + [] warn_slowpath_null+0xf/0x20 + [] local_bh_enable_ip+0x7b/0xa0 + [] _spin_unlock_bh+0x14/0x20 + [] ath_tx_node_cleanup+0x185/0x1b0 [ath9k] + [] ath9k_sta_notify+0x57/0xb0 [ath9k] + [] __sta_info_unlink+0x15a/0x260 [mac80211] + [] sta_info_unlink+0x38/0x60 [mac80211] + [] ieee80211_set_disassoc+0x1ae/0x210 [mac80211] + [] ieee80211_mgd_deauth+0x109/0x110 [mac80211] + [] ieee80211_deauth+0x19/0x20 [mac80211] + [] __cfg80211_mlme_deauth+0xee/0x130 [cfg80211] + [] ? init_object+0x50/0x90 + [] __cfg80211_disconnect+0x159/0x1d0 [cfg80211] + [] cfg80211_netdev_notifier_call+0x10f/0x450 [cfg80211] + [] notifier_call_chain+0x47/0x90 + [] raw_notifier_call_chain+0x11/0x20 + [] call_netdevice_notifiers+0x16/0x20 + [] dev_close+0x4d/0xa0 + [] rollback_registered+0x48/0x120 + [] unregister_netdevice+0x1d/0x70 + [] ieee80211_remove_interfaces+0x84/0xc0 [mac80211] + [] ieee80211_unregister_hw+0x42/0xf0 [mac80211] + [] ath_detach+0x8e/0x180 [ath9k] + [] ath_cleanup+0x11/0x50 [ath9k] + [] ath_pci_remove+0x1c/0x20 [ath9k] + [] pci_device_remove+0x32/0x60 + [] __device_release_driver+0x53/0xb0 + [] driver_detach+0xc8/0xd0 + [] bus_remove_driver+0x85/0xe0 + [] driver_unregister+0x5a/0x90 + [] pci_unregister_driver+0x40/0xb0 + [] ath_pci_exit+0x10/0x20 [ath9k] + [] ath9k_exit+0x9/0x2a [ath9k] + [] sys_delete_module+0x1a8/0x270 + [] ? up_read+0x9/0x10 + [] system_call_fastpath+0x16/0x1b +---[ end trace fad957019ffdd40b ]--- +phy0: Removed STA 00:22:6b:56:fd:e8 +phy0: Destroyed STA 00:22:6b:56:fd:e8 +wlan31: deauthenticating from 00:22:6b:56:fd:e8 by local choice (reason=3) +ath9k 0000:16:00.0: PCI INT A disabled + +The original lockdep fixed an issue where due to the new changes +the driver was not disabling the bottom halves but it is incorrect +to do this on the older kernels since IRQs are already disabled. + +Cc: Ming Lei +Cc: Johannes Berg +Cc: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ath/ath9k/xmit.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -2190,7 +2190,7 @@ void ath_tx_node_cleanup(struct ath_soft + if (ATH_TXQ_SETUP(sc, i)) { + txq = &sc->tx.txq[i]; + +- spin_lock_bh(&txq->axq_lock); ++ spin_lock(&txq->axq_lock); + + list_for_each_entry_safe(ac, + ac_tmp, &txq->axq_acq, list) { +@@ -2211,7 +2211,7 @@ void ath_tx_node_cleanup(struct ath_soft + } + } + +- spin_unlock_bh(&txq->axq_lock); ++ spin_unlock(&txq->axq_lock); + } + } + } diff --git a/queue-2.6.32/revert-parisc-set-pci-cls-early-in-boot.patch b/queue-2.6.32/revert-parisc-set-pci-cls-early-in-boot.patch new file mode 100644 index 00000000000..488c90a5793 --- /dev/null +++ b/queue-2.6.32/revert-parisc-set-pci-cls-early-in-boot.patch @@ -0,0 +1,59 @@ +From 5d233bf3dcad483e5f89865aaf5973e67c1630b1 Mon Sep 17 00:00:00 2001 +From foo@baz Mon May 24 14:58:13 PDT 2010 +Date: Mon, 24 May 2010 14:58:13 -0700 +To: Greg KH +From: Greg Kroah-Hartman +Subject: revert "parisc: Set PCI CLS early in boot." + +This reverts the following patch, which shouldn't have been applied +to the .32 stable tree as it causes problems. + + + commit 5fd4514bb351b5ecb0da3692fff70741e5ed200c upstream. + + Set the PCI CLS early in the boot process to prevent + device failures. In pcibios_set_master use the new + pci_cache_line_size instead of a hard-coded value. + + Signed-off-by: Carlos O'Donell + Reviewed-by: Grant Grundler + Signed-off-by: Kyle McMartin + Signed-off-by: Greg Kroah-Hartman + + +Signed-off-by: Greg Kroah-Hartman + +--- + arch/parisc/kernel/pci.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +--- a/arch/parisc/kernel/pci.c ++++ b/arch/parisc/kernel/pci.c +@@ -18,6 +18,7 @@ + + #include + #include ++#include /* for L1_CACHE_BYTES */ + #include + + #define DEBUG_RESOURCES 0 +@@ -122,10 +123,6 @@ static int __init pcibios_init(void) + } else { + printk(KERN_WARNING "pci_bios != NULL but init() is!\n"); + } +- +- /* Set the CLS for PCI as early as possible. */ +- pci_cache_line_size = pci_dfl_cache_line_size; +- + return 0; + } + +@@ -174,7 +171,7 @@ void pcibios_set_master(struct pci_dev * + ** upper byte is PCI_LATENCY_TIMER. + */ + pci_write_config_word(dev, PCI_CACHE_LINE_SIZE, +- (0x80 << 8) | pci_cache_line_size); ++ (0x80 << 8) | (L1_CACHE_BYTES / sizeof(u32))); + } + + diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 4e9a7878f84..8b60f553f21 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -23,3 +23,12 @@ btrfs-check-for-read-permission-on-src-file-in-the-clone-ioctl.patch alsa-hda-new-intel-hda-controller.patch proc-partially-revert-procfs-provide-stack-information-for-threads.patch revert-procfs-provide-stack-information-for-threads-and-its-fixup-commits.patch +iwlwifi-clear-all-the-stop_queue-flag-after-load-firmware.patch +p54-disable-channels-with-incomplete-calibration-data-sets.patch +cachefiles-fix-error-handling-in-cachefiles_determine_cache_security.patch +megaraid_sas-fix-for-32bit-apps.patch +mmap_min_addr-check-cap_sys_rawio-only-for-write.patch +nilfs2-fix-sync-silent-failure.patch +revert-ath9k-fix-lockdep-warning-when-unloading-module-on-stable-kernels.patch +crypto-authenc-add-einprogress-check.patch +revert-parisc-set-pci-cls-early-in-boot.patch