--- /dev/null
+From 7ac512aa8237c43331ffaf77a4fd8b8d684819ba Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Wed, 12 May 2010 15:34:03 +0100
+Subject: CacheFiles: Fix error handling in cachefiles_determine_cache_security()
+
+From: David Howells <dhowells@redhat.com>
+
+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 <dhowells@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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;
+ }
--- /dev/null
+From 180ce7e81030e1ef763d58f97f9ab840ff57d848 Mon Sep 17 00:00:00 2001
+From: Herbert Xu <herbert@gondor.apana.org.au>
+Date: Mon, 26 Apr 2010 09:14:05 +0800
+Subject: crypto: authenc - Add EINPROGRESS check
+
+From: Herbert Xu <herbert@gondor.apana.org.au>
+
+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 <sebastian@breakpoint.cc>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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)
--- /dev/null
+From a9e10fb9b1c6ad16e73cf2656951fce3a817611e Mon Sep 17 00:00:00 2001
+From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
+Date: Tue, 9 Feb 2010 08:14:11 -0800
+Subject: iwlwifi: clear all the stop_queue flag after load firmware
+
+From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
+
+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 <wey-yi.w.guy@intel.com>
+Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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 */
--- /dev/null
+From b3dc1a212e5167984616445990c76056034f8eeb Mon Sep 17 00:00:00 2001
+From: Tomas Henzl <thenzl@redhat.com>
+Date: Thu, 11 Feb 2010 18:01:50 +0100
+Subject: [SCSI] megaraid_sas: fix for 32bit apps
+
+From: Tomas Henzl <thenzl@redhat.com>
+
+commit b3dc1a212e5167984616445990c76056034f8eeb upstream.
+
+It looks like this patch -
+
+commit 7b2519afa1abd1b9f63aa1e90879307842422dae
+Author: Yang, Bo <Bo.Yang@lsi.com>
+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 <thenzl@redhat.com>
+Cc: Bo Yang <Bo.Yang@lsi.com>
+Signed-off-by: James Bottomley <James.Bottomley@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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,
--- /dev/null
+From 4ae69e6b718589abe97c9625ccbb1e0bc95a8c0e Mon Sep 17 00:00:00 2001
+From: Kees Cook <kees.cook@canonical.com>
+Date: Thu, 22 Apr 2010 12:19:17 -0700
+Subject: mmap_min_addr check CAP_SYS_RAWIO only for write
+
+From: Kees Cook <kees.cook@canonical.com>
+
+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 <kees.cook@canonical.com>
+Acked-by: Serge Hallyn <serue@us.ibm.com>
+Signed-off-by: James Morris <jmorris@namei.org>
+(cherry picked from commit 822cceec7248013821d655545ea45d1c6a9d15b3)
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+--- 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);
--- /dev/null
+From 973bec34bfc1bc2465646181653d67f767d418c8 Mon Sep 17 00:00:00 2001
+From: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+Date: Mon, 3 May 2010 21:00:48 +0900
+Subject: nilfs2: fix sync silent failure
+
+From: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+
+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:
+ [<c1028422>] warn_slowpath_common+0x60/0x90
+ [<c102845f>] warn_slowpath_null+0xd/0x10
+ [<c1095936>] vfs_kern_mount+0xc5/0x14e
+ [<c1095a03>] do_kern_mount+0x32/0xbd
+ [<c10a811e>] do_mount+0x671/0x6d0
+ [<c1073794>] ? __get_free_pages+0x1f/0x21
+ [<c10a684f>] ? copy_mount_options+0x2b/0xe2
+ [<c107b634>] ? strndup_user+0x48/0x67
+ [<c10a81de>] sys_mount+0x61/0x8f
+ [<c100280c>] sysenter_do_call+0x12/0x32
+
+This ensures to set s_bdi for nilfs and fixes the sync silent failure.
+
+Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
+Acked-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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);
--- /dev/null
+From 93a59d7527147e3656664aa3179f8d19de256081 Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@googlemail.com>
+Date: Sat, 31 Oct 2009 22:59:27 +0100
+Subject: p54: disable channels with incomplete calibration data sets
+
+From: Christian Lamparter <chunkeey@googlemail.com>
+
+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 <Larry.Finger@lwfinger.net>
+Reported-by: James Grossmann <cctsurf@gmail.com>
+Signed-off-by: Christian Lamparter <chunkeey@web.de>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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. */
--- /dev/null
+From lrodriguez@atheros.com Mon May 24 14:51:15 2010
+From: "Luis R. Rodriguez" <lrodriguez@atheros.com>
+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" <lrodriguez@atheros.com>, Ming Lei <tom.leiming@gmail.com>, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, "John W. Linville" <linville@tuxdriver.com>, Johannes Berg <johannes@sipsolutions.net>
+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 <whatever-bleh-etc>
+Pid: 2003, comm: rmmod Not tainted 2.6.32.11 #6
+Call Trace:
+ [<ffffffff8105d178>] warn_slowpath_common+0x78/0xb0
+ [<ffffffff8105d1bf>] warn_slowpath_null+0xf/0x20
+ [<ffffffff81063f8b>] local_bh_enable_ip+0x7b/0xa0
+ [<ffffffff815121e4>] _spin_unlock_bh+0x14/0x20
+ [<ffffffffa034aea5>] ath_tx_node_cleanup+0x185/0x1b0 [ath9k]
+ [<ffffffffa0345597>] ath9k_sta_notify+0x57/0xb0 [ath9k]
+ [<ffffffffa02ac51a>] __sta_info_unlink+0x15a/0x260 [mac80211]
+ [<ffffffffa02ac658>] sta_info_unlink+0x38/0x60 [mac80211]
+ [<ffffffffa02b3fbe>] ieee80211_set_disassoc+0x1ae/0x210 [mac80211]
+ [<ffffffffa02b42d9>] ieee80211_mgd_deauth+0x109/0x110 [mac80211]
+ [<ffffffffa02ba409>] ieee80211_deauth+0x19/0x20 [mac80211]
+ [<ffffffffa028160e>] __cfg80211_mlme_deauth+0xee/0x130 [cfg80211]
+ [<ffffffff81118540>] ? init_object+0x50/0x90
+ [<ffffffffa0285429>] __cfg80211_disconnect+0x159/0x1d0 [cfg80211]
+ [<ffffffffa027125f>] cfg80211_netdev_notifier_call+0x10f/0x450 [cfg80211]
+ [<ffffffff81514ca7>] notifier_call_chain+0x47/0x90
+ [<ffffffff8107f501>] raw_notifier_call_chain+0x11/0x20
+ [<ffffffff81442d66>] call_netdevice_notifiers+0x16/0x20
+ [<ffffffff8144352d>] dev_close+0x4d/0xa0
+ [<ffffffff814439a8>] rollback_registered+0x48/0x120
+ [<ffffffff81443a9d>] unregister_netdevice+0x1d/0x70
+ [<ffffffffa02b6cc4>] ieee80211_remove_interfaces+0x84/0xc0 [mac80211]
+ [<ffffffffa02aa072>] ieee80211_unregister_hw+0x42/0xf0 [mac80211]
+ [<ffffffffa0347bde>] ath_detach+0x8e/0x180 [ath9k]
+ [<ffffffffa0347ce1>] ath_cleanup+0x11/0x50 [ath9k]
+ [<ffffffffa0351a2c>] ath_pci_remove+0x1c/0x20 [ath9k]
+ [<ffffffff8129d712>] pci_device_remove+0x32/0x60
+ [<ffffffff81332373>] __device_release_driver+0x53/0xb0
+ [<ffffffff81332498>] driver_detach+0xc8/0xd0
+ [<ffffffff81331405>] bus_remove_driver+0x85/0xe0
+ [<ffffffff81332a5a>] driver_unregister+0x5a/0x90
+ [<ffffffff8129da00>] pci_unregister_driver+0x40/0xb0
+ [<ffffffffa03518d0>] ath_pci_exit+0x10/0x20 [ath9k]
+ [<ffffffffa0353cd5>] ath9k_exit+0x9/0x2a [ath9k]
+ [<ffffffff81092838>] sys_delete_module+0x1a8/0x270
+ [<ffffffff8107ebe9>] ? up_read+0x9/0x10
+ [<ffffffff81011f82>] 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 <tom.leiming@gmail.com>
+Cc: Johannes Berg <johannes@sipsolutions.net>
+Cc: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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);
+ }
+ }
+ }
--- /dev/null
+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 <greg@kroah.com>
+From: Greg Kroah-Hartman <gregkh@suse.de>
+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 <carlos@codesourcery.com>
+ Reviewed-by: Grant Grundler <grundler@google.com>
+ Signed-off-by: Kyle McMartin <kyle@redhat.com>
+ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ 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 <asm/io.h>
+ #include <asm/system.h>
++#include <asm/cache.h> /* for L1_CACHE_BYTES */
+ #include <asm/superio.h>
+
+ #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)));
+ }
+
+
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