]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.37 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Tue, 22 Feb 2011 20:18:04 +0000 (12:18 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 22 Feb 2011 20:18:04 +0000 (12:18 -0800)
17 files changed:
queue-2.6.37/acer-wmi-fix-capitalisation-of-guid.patch [new file with mode: 0644]
queue-2.6.37/arm-ensure-predictable-endian-state-on-signal-handler-entry.patch [new file with mode: 0644]
queue-2.6.37/arm-keep-exit-text-data-around-for-smp_on_up.patch [new file with mode: 0644]
queue-2.6.37/asoc-wm8903-fix-mic-detection-enable-logic.patch [new file with mode: 0644]
queue-2.6.37/cifs-fix-handling-of-scopeid-in-cifs_convert_address.patch [new file with mode: 0644]
queue-2.6.37/cifs-fix-regression-in-lanman-lm-auth-code.patch [new file with mode: 0644]
queue-2.6.37/ecryptfs-copy-up-lower-inode-attrs-in-getattr.patch [new file with mode: 0644]
queue-2.6.37/genirq-disable-the-shirq_debug-call-in-request_threaded_irq-for-now.patch [new file with mode: 0644]
queue-2.6.37/genirq-prevent-access-beyond-allocated_irqs-bitmap.patch [new file with mode: 0644]
queue-2.6.37/net-can-janz-ican3-world-writable-sysfs-termination-file.patch [new file with mode: 0644]
queue-2.6.37/pcmcia-re-enable-zoomed-video-support.patch [new file with mode: 0644]
queue-2.6.37/perf-fix-throttle-logic.patch [new file with mode: 0644]
queue-2.6.37/platform-x86-acer-wmi-world-writable-sysfs-threeg-file.patch [new file with mode: 0644]
queue-2.6.37/platform-x86-asus_acpi-world-writable-procfs-files.patch [new file with mode: 0644]
queue-2.6.37/platform-x86-tc1100-wmi-world-writable-sysfs-wireless-and-jogdial-files.patch [new file with mode: 0644]
queue-2.6.37/revert-tpm_tis-use-timeouts-returned-from-tpm.patch [new file with mode: 0644]
queue-2.6.37/series

diff --git a/queue-2.6.37/acer-wmi-fix-capitalisation-of-guid.patch b/queue-2.6.37/acer-wmi-fix-capitalisation-of-guid.patch
new file mode 100644 (file)
index 0000000..95399cb
--- /dev/null
@@ -0,0 +1,31 @@
+From bbb706079abe955a9e3f208f541de97d99449236 Mon Sep 17 00:00:00 2001
+From: Matthew Garrett <mjg@redhat.com>
+Date: Wed, 9 Feb 2011 16:39:40 -0500
+Subject: acer-wmi: Fix capitalisation of GUID
+
+From: Matthew Garrett <mjg@redhat.com>
+
+commit bbb706079abe955a9e3f208f541de97d99449236 upstream.
+
+6AF4F258-B401-42fd-BE91-3D4AC2D7C0D3 needs to be
+6AF4F258-B401-42FD-BE91-3D4AC2D7C0D3 to match the hardware alias.
+
+Signed-off-by: Matthew Garrett <mjg@redhat.com>
+Acked-by: Carlos Corbacho <carlos@strangeworlds.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/platform/x86/acer-wmi.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/platform/x86/acer-wmi.c
++++ b/drivers/platform/x86/acer-wmi.c
+@@ -80,7 +80,7 @@ MODULE_LICENSE("GPL");
+  */
+ #define AMW0_GUID1            "67C3371D-95A3-4C37-BB61-DD47B491DAAB"
+ #define AMW0_GUID2            "431F16ED-0C2B-444C-B267-27DEB140CF9C"
+-#define WMID_GUID1            "6AF4F258-B401-42fd-BE91-3D4AC2D7C0D3"
++#define WMID_GUID1            "6AF4F258-B401-42FD-BE91-3D4AC2D7C0D3"
+ #define WMID_GUID2            "95764E09-FB56-4e83-B31A-37761F60994A"
+ MODULE_ALIAS("wmi:67C3371D-95A3-4C37-BB61-DD47B491DAAB");
diff --git a/queue-2.6.37/arm-ensure-predictable-endian-state-on-signal-handler-entry.patch b/queue-2.6.37/arm-ensure-predictable-endian-state-on-signal-handler-entry.patch
new file mode 100644 (file)
index 0000000..68c1ff2
--- /dev/null
@@ -0,0 +1,35 @@
+From 53399053eb505cf541b2405bd9d9bca5ecfb96fb Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+Date: Sun, 20 Feb 2011 12:22:52 +0000
+Subject: ARM: Ensure predictable endian state on signal handler entry
+
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+
+commit 53399053eb505cf541b2405bd9d9bca5ecfb96fb upstream.
+
+Ensure a predictable endian state when entering signal handlers.  This
+avoids programs which use SETEND to momentarily switch their endian
+state from having their signal handlers entered with an unpredictable
+endian state.
+
+Acked-by: Dave Martin <dave.martin@linaro.org>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/kernel/signal.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/arch/arm/kernel/signal.c
++++ b/arch/arm/kernel/signal.c
+@@ -474,7 +474,9 @@ setup_return(struct pt_regs *regs, struc
+       unsigned long handler = (unsigned long)ka->sa.sa_handler;
+       unsigned long retcode;
+       int thumb = 0;
+-      unsigned long cpsr = regs->ARM_cpsr & ~PSR_f;
++      unsigned long cpsr = regs->ARM_cpsr & ~(PSR_f | PSR_E_BIT);
++
++      cpsr |= PSR_ENDSTATE;
+       /*
+        * Maybe we need to deliver a 32-bit signal to a 26-bit task.
diff --git a/queue-2.6.37/arm-keep-exit-text-data-around-for-smp_on_up.patch b/queue-2.6.37/arm-keep-exit-text-data-around-for-smp_on_up.patch
new file mode 100644 (file)
index 0000000..2ab8be8
--- /dev/null
@@ -0,0 +1,62 @@
+From a9ad21fed09cb95d34af9474be0831525b30c4c6 Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+Date: Mon, 21 Feb 2011 10:13:36 +0000
+Subject: ARM: Keep exit text/data around for SMP_ON_UP
+
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+
+commit a9ad21fed09cb95d34af9474be0831525b30c4c6 upstream.
+
+When SMP_ON_UP is used and the spinlocks are inlined, we end up with
+inline spinlocks in the exit code, with references from the SMP
+alternatives section to the exit sections.  This causes link time
+errors.  Avoid this by placing the exit sections in the init-discarded
+region.
+
+Tested-by: Dave Martin <dave.martin@linaro.org>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/kernel/vmlinux.lds.S |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/arch/arm/kernel/vmlinux.lds.S
++++ b/arch/arm/kernel/vmlinux.lds.S
+@@ -21,6 +21,12 @@
+ #define ARM_CPU_KEEP(x)
+ #endif
++#if defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK)
++#define ARM_EXIT_KEEP(x)      x
++#else
++#define ARM_EXIT_KEEP(x)
++#endif
++
+ OUTPUT_ARCH(arm)
+ ENTRY(stext)
+@@ -43,6 +49,7 @@ SECTIONS
+               _sinittext = .;
+                       HEAD_TEXT
+                       INIT_TEXT
++                      ARM_EXIT_KEEP(EXIT_TEXT)
+               _einittext = .;
+               ARM_CPU_DISCARD(PROC_INFO)
+               __arch_info_begin = .;
+@@ -67,6 +74,7 @@ SECTIONS
+ #ifndef CONFIG_XIP_KERNEL
+               __init_begin = _stext;
+               INIT_DATA
++              ARM_EXIT_KEEP(EXIT_DATA)
+ #endif
+       }
+@@ -161,6 +169,7 @@ SECTIONS
+               . = ALIGN(PAGE_SIZE);
+               __init_begin = .;
+               INIT_DATA
++              ARM_EXIT_KEEP(EXIT_DATA)
+               . = ALIGN(PAGE_SIZE);
+               __init_end = .;
+ #endif
diff --git a/queue-2.6.37/asoc-wm8903-fix-mic-detection-enable-logic.patch b/queue-2.6.37/asoc-wm8903-fix-mic-detection-enable-logic.patch
new file mode 100644 (file)
index 0000000..97d8cf4
--- /dev/null
@@ -0,0 +1,32 @@
+From 3088e3b4963d26d6f6f54987f595b974ed6d48d8 Mon Sep 17 00:00:00 2001
+From: Stephen Warren <swarren@nvidia.com>
+Date: Thu, 10 Feb 2011 15:37:14 -0700
+Subject: ASoC: WM8903: Fix mic detection enable logic
+
+From: Stephen Warren <swarren@nvidia.com>
+
+commit 3088e3b4963d26d6f6f54987f595b974ed6d48d8 upstream.
+
+The mic detection HW should be enabled when either mic or short detection
+is required, not when only both are required.
+
+Signed-off-by: Stephen Warren <swarren@nvidia.com>
+Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/soc/codecs/wm8903.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/wm8903.c
++++ b/sound/soc/codecs/wm8903.c
+@@ -1479,7 +1479,7 @@ int wm8903_mic_detect(struct snd_soc_cod
+                           WM8903_MICDET_EINT | WM8903_MICSHRT_EINT,
+                           irq_mask);
+-      if (det && shrt) {
++      if (det || shrt) {
+               /* Enable mic detection, this may not have been set through
+                * platform data (eg, if the defaults are OK). */
+               snd_soc_update_bits(codec, WM8903_WRITE_SEQUENCER_0,
diff --git a/queue-2.6.37/cifs-fix-handling-of-scopeid-in-cifs_convert_address.patch b/queue-2.6.37/cifs-fix-handling-of-scopeid-in-cifs_convert_address.patch
new file mode 100644 (file)
index 0000000..fda1f79
--- /dev/null
@@ -0,0 +1,54 @@
+From 9616125611ee47693186533d76e403856a36b3c8 Mon Sep 17 00:00:00 2001
+From: Jeff Layton <jlayton@redhat.com>
+Date: Wed, 16 Feb 2011 09:34:16 -0500
+Subject: cifs: fix handling of scopeid in cifs_convert_address
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Jeff Layton <jlayton@redhat.com>
+
+commit 9616125611ee47693186533d76e403856a36b3c8 upstream.
+
+The code finds, the '%' sign in an ipv6 address and copies that to a
+buffer allocated on the stack. It then ignores that buffer, and passes
+'pct' to simple_strtoul(), which doesn't work right because we're
+comparing 'endp' against a completely different string.
+
+Fix it by passing the correct pointer. While we're at it, this is a
+good candidate for conversion to strict_strtoul as well.
+
+Cc: David Howells <dhowells@redhat.com>
+Reported-by: Björn JACKE <bj@sernet.de>
+Signed-off-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/netmisc.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/fs/cifs/netmisc.c
++++ b/fs/cifs/netmisc.c
+@@ -170,7 +170,7 @@ cifs_convert_address(struct sockaddr *ds
+ {
+       int rc, alen, slen;
+       const char *pct;
+-      char *endp, scope_id[13];
++      char scope_id[13];
+       struct sockaddr_in *s4 = (struct sockaddr_in *) dst;
+       struct sockaddr_in6 *s6 = (struct sockaddr_in6 *) dst;
+@@ -197,9 +197,9 @@ cifs_convert_address(struct sockaddr *ds
+               memcpy(scope_id, pct + 1, slen);
+               scope_id[slen] = '\0';
+-              s6->sin6_scope_id = (u32) simple_strtoul(pct, &endp, 0);
+-              if (endp != scope_id + slen)
+-                      return 0;
++              rc = strict_strtoul(scope_id, 0,
++                                      (unsigned long *)&s6->sin6_scope_id);
++              rc = (rc == 0) ? 1 : 0;
+       }
+       return rc;
diff --git a/queue-2.6.37/cifs-fix-regression-in-lanman-lm-auth-code.patch b/queue-2.6.37/cifs-fix-regression-in-lanman-lm-auth-code.patch
new file mode 100644 (file)
index 0000000..4e4851f
--- /dev/null
@@ -0,0 +1,49 @@
+From 5e640927a597a7c3e72b61e8bce74c22e906de65 Mon Sep 17 00:00:00 2001
+From: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
+Date: Thu, 17 Feb 2011 14:38:31 -0600
+Subject: cifs: Fix regression in LANMAN (LM) auth code
+
+From: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
+
+commit 5e640927a597a7c3e72b61e8bce74c22e906de65 upstream.
+
+LANMAN response length was changed to 16 bytes instead of 24 bytes.
+Revert it back to 24 bytes.
+
+Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/sess.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/fs/cifs/sess.c
++++ b/fs/cifs/sess.c
+@@ -667,13 +667,13 @@ ssetup_ntlmssp_authenticate:
+       if (type == LANMAN) {
+ #ifdef CONFIG_CIFS_WEAK_PW_HASH
+-              char lnm_session_key[CIFS_SESS_KEY_SIZE];
++              char lnm_session_key[CIFS_AUTH_RESP_SIZE];
+               pSMB->req.hdr.Flags2 &= ~SMBFLG2_UNICODE;
+               /* no capabilities flags in old lanman negotiation */
+-              pSMB->old_req.PasswordLength = cpu_to_le16(CIFS_SESS_KEY_SIZE);
++              pSMB->old_req.PasswordLength = cpu_to_le16(CIFS_AUTH_RESP_SIZE);
+               /* Calculate hash with password and copy into bcc_ptr.
+                * Encryption Key (stored as in cryptkey) gets used if the
+@@ -686,8 +686,8 @@ ssetup_ntlmssp_authenticate:
+                                       true : false, lnm_session_key);
+               ses->flags |= CIFS_SES_LANMAN;
+-              memcpy(bcc_ptr, (char *)lnm_session_key, CIFS_SESS_KEY_SIZE);
+-              bcc_ptr += CIFS_SESS_KEY_SIZE;
++              memcpy(bcc_ptr, (char *)lnm_session_key, CIFS_AUTH_RESP_SIZE);
++              bcc_ptr += CIFS_AUTH_RESP_SIZE;
+               /* can not sign if LANMAN negotiated so no need
+               to calculate signing key? but what if server
diff --git a/queue-2.6.37/ecryptfs-copy-up-lower-inode-attrs-in-getattr.patch b/queue-2.6.37/ecryptfs-copy-up-lower-inode-attrs-in-getattr.patch
new file mode 100644 (file)
index 0000000..0496574
--- /dev/null
@@ -0,0 +1,38 @@
+From 55f9cf6bbaa682958a7dd2755f883b768270c3ce Mon Sep 17 00:00:00 2001
+From: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
+Date: Tue, 11 Jan 2011 12:43:42 -0600
+Subject: eCryptfs: Copy up lower inode attrs in getattr
+
+From: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
+
+commit 55f9cf6bbaa682958a7dd2755f883b768270c3ce upstream.
+
+The lower filesystem may do some type of inode revalidation during a
+getattr call. eCryptfs should take advantage of that by copying the
+lower inode attributes to the eCryptfs inode after a call to
+vfs_getattr() on the lower inode.
+
+I originally wrote this fix while working on eCryptfs on nfsv3 support,
+but discovered it also fixed an eCryptfs on ext4 nanosecond timestamp
+bug that was reported.
+
+https://bugs.launchpad.net/bugs/613873
+
+Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/ecryptfs/inode.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/ecryptfs/inode.c
++++ b/fs/ecryptfs/inode.c
+@@ -1095,6 +1095,8 @@ int ecryptfs_getattr(struct vfsmount *mn
+       rc = vfs_getattr(ecryptfs_dentry_to_lower_mnt(dentry),
+                        ecryptfs_dentry_to_lower(dentry), &lower_stat);
+       if (!rc) {
++              fsstack_copy_attr_all(dentry->d_inode,
++                                    ecryptfs_inode_to_lower(dentry->d_inode));
+               generic_fillattr(dentry->d_inode, stat);
+               stat->blocks = lower_stat.blocks;
+       }
diff --git a/queue-2.6.37/genirq-disable-the-shirq_debug-call-in-request_threaded_irq-for-now.patch b/queue-2.6.37/genirq-disable-the-shirq_debug-call-in-request_threaded_irq-for-now.patch
new file mode 100644 (file)
index 0000000..3d68ccf
--- /dev/null
@@ -0,0 +1,59 @@
+From 6d83f94db95cfe65d2a6359cccdf61cf087c2598 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Fri, 18 Feb 2011 23:27:23 +0100
+Subject: genirq: Disable the SHIRQ_DEBUG call in request_threaded_irq for now
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 6d83f94db95cfe65d2a6359cccdf61cf087c2598 upstream.
+
+With CONFIG_SHIRQ_DEBUG=y we call a newly installed interrupt handler
+in request_threaded_irq().
+
+The original implementation (commit a304e1b8) called the handler
+_BEFORE_ it was installed, but that caused problems with handlers
+calling disable_irq_nosync(). See commit 377bf1e4.
+
+It's braindead in the first place to call disable_irq_nosync in shared
+handlers, but ....
+
+Moving this call after we installed the handler looks innocent, but it
+is very subtle broken on SMP.
+
+Interrupt handlers rely on the fact, that the irq core prevents
+reentrancy.
+
+Now this debug call violates that promise because we run the handler
+w/o the IRQ_INPROGRESS protection - which we cannot apply here because
+that would result in a possibly forever masked interrupt line.
+
+A concurrent real hardware interrupt on a different CPU results in
+handler reentrancy and can lead to complete wreckage, which was
+unfortunately observed in reality and took a fricking long time to
+debug.
+
+Leave the code here for now. We want this debug feature, but that's
+not easy to fix. We really should get rid of those
+disable_irq_nosync() abusers and remove that function completely.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Anton Vorontsov <avorontsov@ru.mvista.com>
+Cc: David Woodhouse <dwmw2@infradead.org>
+Cc: Arjan van de Ven <arjan@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/irq/manage.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -1098,7 +1098,7 @@ int request_threaded_irq(unsigned int ir
+       if (retval)
+               kfree(action);
+-#ifdef CONFIG_DEBUG_SHIRQ
++#ifdef CONFIG_DEBUG_SHIRQ_FIXME
+       if (!retval && (irqflags & IRQF_SHARED)) {
+               /*
+                * It's a shared IRQ -- the driver ought to be prepared for it
diff --git a/queue-2.6.37/genirq-prevent-access-beyond-allocated_irqs-bitmap.patch b/queue-2.6.37/genirq-prevent-access-beyond-allocated_irqs-bitmap.patch
new file mode 100644 (file)
index 0000000..77776cb
--- /dev/null
@@ -0,0 +1,107 @@
+From c1ee6264280e740a9d3ff3feef38642cf0a57013 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Thu, 17 Feb 2011 17:45:15 +0100
+Subject: genirq: Prevent access beyond allocated_irqs bitmap
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit c1ee6264280e740a9d3ff3feef38642cf0a57013 upstream.
+
+Lars-Peter Clausen pointed out:
+
+   I stumbled upon this while looking through the existing archs using
+   SPARSE_IRQ.  Even with SPARSE_IRQ the NR_IRQS is still the upper
+   limit for the number of IRQs.
+
+   Both PXA and MMP set NR_IRQS to IRQ_BOARD_START, with
+   IRQ_BOARD_START being the number of IRQs used by the core.
+
+   In various machine files the nr_irqs field of the ARM machine
+   defintion struct is then set to "IRQ_BOARD_START + NR_BOARD_IRQS".
+
+   As a result "nr_irqs" will greater then NR_IRQS which then again
+   causes the "allocated_irqs" bitmap in the core irq code to be
+   accessed beyond its size overwriting unrelated data.
+
+The core code really misses a sanity check there.
+
+This went unnoticed so far as by chance the compiler/linker places
+data behind that bitmap which gets initialized later on those affected
+platforms.
+
+So the obvious fix would be to add a sanity check in early_irq_init()
+and break all affected platforms. Though that check wants to be
+backported to stable as well, which will require to fix all known
+problematic platforms and probably some more yet not known ones as
+well. Lots of churn.
+
+A way simpler solution is to allocate a slightly larger bitmap and
+avoid the whole churn w/o breaking anything. Add a few warnings when
+an arch returns utter crap.
+
+Reported-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Haojian Zhuang <haojian.zhuang@marvell.com>
+Cc: Eric Miao <eric.y.miao@gmail.com>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/irq/internals.h |    6 ++++++
+ kernel/irq/irqdesc.c   |   11 ++++++++++-
+ kernel/irq/resend.c    |    2 +-
+ 3 files changed, 17 insertions(+), 2 deletions(-)
+
+--- a/kernel/irq/internals.h
++++ b/kernel/irq/internals.h
+@@ -3,6 +3,12 @@
+  */
+ #include <linux/irqdesc.h>
++#ifdef CONFIG_SPARSE_IRQ
++# define IRQ_BITMAP_BITS      (NR_IRQS + 8196)
++#else
++# define IRQ_BITMAP_BITS      NR_IRQS
++#endif
++
+ extern int noirqdebug;
+ #define irq_data_to_desc(data)        container_of(data, struct irq_desc, irq_data)
+--- a/kernel/irq/irqdesc.c
++++ b/kernel/irq/irqdesc.c
+@@ -91,7 +91,7 @@ int nr_irqs = NR_IRQS;
+ EXPORT_SYMBOL_GPL(nr_irqs);
+ static DEFINE_MUTEX(sparse_irq_lock);
+-static DECLARE_BITMAP(allocated_irqs, NR_IRQS);
++static DECLARE_BITMAP(allocated_irqs, IRQ_BITMAP_BITS);
+ #ifdef CONFIG_SPARSE_IRQ
+@@ -215,6 +215,15 @@ int __init early_irq_init(void)
+       initcnt = arch_probe_nr_irqs();
+       printk(KERN_INFO "NR_IRQS:%d nr_irqs:%d %d\n", NR_IRQS, nr_irqs, initcnt);
++      if (WARN_ON(nr_irqs > IRQ_BITMAP_BITS))
++              nr_irqs = IRQ_BITMAP_BITS;
++
++      if (WARN_ON(initcnt > IRQ_BITMAP_BITS))
++              initcnt = IRQ_BITMAP_BITS;
++
++      if (initcnt > nr_irqs)
++              nr_irqs = initcnt;
++
+       for (i = 0; i < initcnt; i++) {
+               desc = alloc_desc(i, node);
+               set_bit(i, allocated_irqs);
+--- a/kernel/irq/resend.c
++++ b/kernel/irq/resend.c
+@@ -23,7 +23,7 @@
+ #ifdef CONFIG_HARDIRQS_SW_RESEND
+ /* Bitmap to handle software resend of interrupts: */
+-static DECLARE_BITMAP(irqs_resend, NR_IRQS);
++static DECLARE_BITMAP(irqs_resend, IRQ_BITMAP_BITS);
+ /*
+  * Run software resends of IRQ's
diff --git a/queue-2.6.37/net-can-janz-ican3-world-writable-sysfs-termination-file.patch b/queue-2.6.37/net-can-janz-ican3-world-writable-sysfs-termination-file.patch
new file mode 100644 (file)
index 0000000..7e5dba9
--- /dev/null
@@ -0,0 +1,30 @@
+From 1e6d93e45b231b3ae87c01902ede2315aacfe976 Mon Sep 17 00:00:00 2001
+From: Vasiliy Kulikov <segoon@openwall.com>
+Date: Fri, 4 Feb 2011 02:23:53 +0000
+Subject: net: can: janz-ican3: world-writable sysfs termination file
+
+From: Vasiliy Kulikov <segoon@openwall.com>
+
+commit 1e6d93e45b231b3ae87c01902ede2315aacfe976 upstream.
+
+Don't allow everybody to set terminator via sysfs.
+
+Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/can/janz-ican3.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/can/janz-ican3.c
++++ b/drivers/net/can/janz-ican3.c
+@@ -1627,7 +1627,7 @@ static ssize_t ican3_sysfs_set_term(stru
+       return count;
+ }
+-static DEVICE_ATTR(termination, S_IWUGO | S_IRUGO, ican3_sysfs_show_term,
++static DEVICE_ATTR(termination, S_IWUSR | S_IRUGO, ican3_sysfs_show_term,
+                                                  ican3_sysfs_set_term);
+ static struct attribute *ican3_sysfs_attrs[] = {
diff --git a/queue-2.6.37/pcmcia-re-enable-zoomed-video-support.patch b/queue-2.6.37/pcmcia-re-enable-zoomed-video-support.patch
new file mode 100644 (file)
index 0000000..a3d1745
--- /dev/null
@@ -0,0 +1,41 @@
+From 33619f0d3ff715a2a5499520967d526ad931d70d Mon Sep 17 00:00:00 2001
+From: Dominik Brodowski <linux@dominikbrodowski.net>
+Date: Sat, 19 Feb 2011 12:35:15 +0100
+Subject: pcmcia: re-enable Zoomed Video support
+
+From: Dominik Brodowski <linux@dominikbrodowski.net>
+
+commit 33619f0d3ff715a2a5499520967d526ad931d70d upstream.
+
+Allow drivers to enable Zoomed Video support. Currently, this is only
+used by out-of-tree drivers (L64020 DVB driver in particular).
+
+Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pcmcia/pcmcia_resource.c |    2 ++
+ include/pcmcia/ds.h              |    1 +
+ 2 files changed, 3 insertions(+)
+
+--- a/drivers/pcmcia/pcmcia_resource.c
++++ b/drivers/pcmcia/pcmcia_resource.c
+@@ -518,6 +518,8 @@ int pcmcia_enable_device(struct pcmcia_d
+               flags |= CONF_ENABLE_IOCARD;
+       if (flags & CONF_ENABLE_IOCARD)
+               s->socket.flags |= SS_IOCARD;
++      if (flags & CONF_ENABLE_ZVCARD)
++              s->socket.flags |= SS_ZVCARD | SS_IOCARD;
+       if (flags & CONF_ENABLE_SPKR) {
+               s->socket.flags |= SS_SPKR_ENA;
+               status = CCSR_AUDIO_ENA;
+--- a/include/pcmcia/ds.h
++++ b/include/pcmcia/ds.h
+@@ -261,6 +261,7 @@ void pcmcia_disable_device(struct pcmcia
+ #define CONF_ENABLE_ESR         0x0008
+ #define CONF_ENABLE_IOCARD    0x0010 /* auto-enabled if IO resources or IRQ
+                                       * (CONF_ENABLE_IRQ) in use */
++#define CONF_ENABLE_ZVCARD    0x0020
+ /* flags used by pcmcia_loop_config() autoconfiguration */
+ #define CONF_AUTO_CHECK_VCC   0x0100 /* check for matching Vcc? */
diff --git a/queue-2.6.37/perf-fix-throttle-logic.patch b/queue-2.6.37/perf-fix-throttle-logic.patch
new file mode 100644 (file)
index 0000000..b0be9d9
--- /dev/null
@@ -0,0 +1,71 @@
+From 4fe757dd48a9e95e1a071291f15dda5421dacb66 Mon Sep 17 00:00:00 2001
+From: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Date: Tue, 15 Feb 2011 22:26:07 +0100
+Subject: perf: Fix throttle logic
+
+From: Peter Zijlstra <a.p.zijlstra@chello.nl>
+
+commit 4fe757dd48a9e95e1a071291f15dda5421dacb66 upstream.
+
+It was possible to call pmu::start() on an already running event. In
+particular this lead so some wreckage as the hrtimer events would
+re-initialize active timers.
+
+This was due to throttled events being activated again by scheduling.
+Scheduling in a context would add and force start events, resulting in
+running events with a possible throttle status. The next tick to hit
+that task will then try to unthrottle the event and call ->start() on
+an already running event.
+
+Reported-by: Jeff Moyer <jmoyer@redhat.com>
+Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
+LKML-Reference: <new-submission>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/perf_event.c |   19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
+--- a/kernel/perf_event.c
++++ b/kernel/perf_event.c
+@@ -652,6 +652,10 @@ retry:
+       raw_spin_unlock_irq(&ctx->lock);
+ }
++#define MAX_INTERRUPTS (~0ULL)
++
++static void perf_log_throttle(struct perf_event *event, int enable);
++
+ static int
+ event_sched_in(struct perf_event *event,
+                struct perf_cpu_context *cpuctx,
+@@ -662,6 +666,17 @@ event_sched_in(struct perf_event *event,
+       event->state = PERF_EVENT_STATE_ACTIVE;
+       event->oncpu = smp_processor_id();
++
++      /*
++       * Unthrottle events, since we scheduled we might have missed several
++       * ticks already, also for a heavily scheduling task there is little
++       * guarantee it'll get a tick in a timely manner.
++       */
++      if (unlikely(event->hw.interrupts == MAX_INTERRUPTS)) {
++              perf_log_throttle(event, 1);
++              event->hw.interrupts = 0;
++      }
++
+       /*
+        * The new state must be visible before we turn it on in the hardware:
+        */
+@@ -1469,10 +1484,6 @@ void __perf_event_task_sched_in(struct t
+       }
+ }
+-#define MAX_INTERRUPTS (~0ULL)
+-
+-static void perf_log_throttle(struct perf_event *event, int enable);
+-
+ static u64 perf_calculate_period(struct perf_event *event, u64 nsec, u64 count)
+ {
+       u64 frequency = event->attr.sample_freq;
diff --git a/queue-2.6.37/platform-x86-acer-wmi-world-writable-sysfs-threeg-file.patch b/queue-2.6.37/platform-x86-acer-wmi-world-writable-sysfs-threeg-file.patch
new file mode 100644 (file)
index 0000000..0a6047a
--- /dev/null
@@ -0,0 +1,30 @@
+From b80b168f918bba4b847e884492415546b340e19d Mon Sep 17 00:00:00 2001
+From: Vasiliy Kulikov <segoon@openwall.com>
+Date: Fri, 4 Feb 2011 15:23:56 +0300
+Subject: platform: x86: acer-wmi: world-writable sysfs threeg file
+
+From: Vasiliy Kulikov <segoon@openwall.com>
+
+commit b80b168f918bba4b847e884492415546b340e19d upstream.
+
+Don't allow everybody to write to hardware registers.
+
+Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
+Signed-off-by: Matthew Garrett <mjg@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/platform/x86/acer-wmi.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/platform/x86/acer-wmi.c
++++ b/drivers/platform/x86/acer-wmi.c
+@@ -1065,7 +1065,7 @@ static ssize_t set_bool_threeg(struct de
+                       return -EINVAL;
+       return count;
+ }
+-static DEVICE_ATTR(threeg, S_IWUGO | S_IRUGO | S_IWUSR, show_bool_threeg,
++static DEVICE_ATTR(threeg, S_IRUGO | S_IWUSR, show_bool_threeg,
+       set_bool_threeg);
+ static ssize_t show_interface(struct device *dev, struct device_attribute *attr,
diff --git a/queue-2.6.37/platform-x86-asus_acpi-world-writable-procfs-files.patch b/queue-2.6.37/platform-x86-asus_acpi-world-writable-procfs-files.patch
new file mode 100644 (file)
index 0000000..376bfb8
--- /dev/null
@@ -0,0 +1,39 @@
+From 8040835760adf0ef66876c063d47f79f015fb55d Mon Sep 17 00:00:00 2001
+From: Vasiliy Kulikov <segoon@openwall.com>
+Date: Fri, 4 Feb 2011 15:23:59 +0300
+Subject: platform: x86: asus_acpi: world-writable procfs files
+
+From: Vasiliy Kulikov <segoon@openwall.com>
+
+commit 8040835760adf0ef66876c063d47f79f015fb55d upstream.
+
+Don't allow everybody to change ACPI settings.  The comment says that it
+is done deliberatelly, however, the comment before disp_proc_write()
+says that at least one of these setting is experimental.
+
+Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
+Signed-off-by: Matthew Garrett <mjg@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/platform/x86/asus_acpi.c |    8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+--- a/drivers/platform/x86/asus_acpi.c
++++ b/drivers/platform/x86/asus_acpi.c
+@@ -1081,14 +1081,8 @@ static int asus_hotk_add_fs(struct acpi_
+       struct proc_dir_entry *proc;
+       mode_t mode;
+-      /*
+-       * If parameter uid or gid is not changed, keep the default setting for
+-       * our proc entries (-rw-rw-rw-) else, it means we care about security,
+-       * and then set to -rw-rw----
+-       */
+-
+       if ((asus_uid == 0) && (asus_gid == 0)) {
+-              mode = S_IFREG | S_IRUGO | S_IWUGO;
++              mode = S_IFREG | S_IRUGO | S_IWUSR | S_IWGRP;
+       } else {
+               mode = S_IFREG | S_IRUSR | S_IRGRP | S_IWUSR | S_IWGRP;
+               printk(KERN_WARNING "  asus_uid and asus_gid parameters are "
diff --git a/queue-2.6.37/platform-x86-tc1100-wmi-world-writable-sysfs-wireless-and-jogdial-files.patch b/queue-2.6.37/platform-x86-tc1100-wmi-world-writable-sysfs-wireless-and-jogdial-files.patch
new file mode 100644 (file)
index 0000000..0b258f4
--- /dev/null
@@ -0,0 +1,30 @@
+From 8a6a142c1286797978e4db266d22875a5f424897 Mon Sep 17 00:00:00 2001
+From: Vasiliy Kulikov <segoon@openwall.com>
+Date: Fri, 4 Feb 2011 15:24:03 +0300
+Subject: platform: x86: tc1100-wmi: world-writable sysfs wireless and jogdial files
+
+From: Vasiliy Kulikov <segoon@openwall.com>
+
+commit 8a6a142c1286797978e4db266d22875a5f424897 upstream.
+
+Don't allow everybody to change WMI settings.
+
+Signed-off-by: Vasiliy Kulikov <segoon@openwall.com>
+Signed-off-by: Matthew Garrett <mjg@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/platform/x86/tc1100-wmi.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/platform/x86/tc1100-wmi.c
++++ b/drivers/platform/x86/tc1100-wmi.c
+@@ -162,7 +162,7 @@ set_bool_##value(struct device *dev, str
+                       return -EINVAL; \
+       return count; \
+ } \
+-static DEVICE_ATTR(value, S_IWUGO | S_IRUGO | S_IWUSR, \
++static DEVICE_ATTR(value, S_IRUGO | S_IWUSR, \
+       show_bool_##value, set_bool_##value);
+ show_set_bool(wireless, TC1100_INSTANCE_WIRELESS);
diff --git a/queue-2.6.37/revert-tpm_tis-use-timeouts-returned-from-tpm.patch b/queue-2.6.37/revert-tpm_tis-use-timeouts-returned-from-tpm.patch
new file mode 100644 (file)
index 0000000..5f6b5fd
--- /dev/null
@@ -0,0 +1,91 @@
+From foo@baz Tue Feb 22 12:12:27 PST 2011
+Date: Tue, 22 Feb 2011 12:12:27 -0800
+To: Greg KH <greg@kroah.com>
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Subject: Revert: tpm_tis: Use timeouts returned from TPM
+
+This is a revert of commit 9b29050f8f75916f974a2d231ae5d3cd59792296
+upstream which has been found to prevent suspend from working on a
+number of systems.
+
+Thanks to Jiri Slaby <jirislaby@gmail.com> for tracing this down.
+
+Cc: Jiri Slaby <jirislaby@gmail.com>
+Cc: Rafael Wysocki <rjw@sisk.pl>
+Cc: Stefan Berger <stefanb@linux.vnet.ibm.com>
+Cc: Guillaume Chazarain <guichaz@gmail.com>
+Cc: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/tpm/tpm.c     |   18 ++----------------
+ drivers/char/tpm/tpm.h     |    2 --
+ drivers/char/tpm/tpm_tis.c |    4 +---
+ 3 files changed, 3 insertions(+), 21 deletions(-)
+
+--- a/drivers/char/tpm/tpm.c
++++ b/drivers/char/tpm/tpm.c
+@@ -577,11 +577,9 @@ duration:
+       if (rc)
+               return;
+-      if (be32_to_cpu(tpm_cmd.header.out.return_code) != 0 ||
+-          be32_to_cpu(tpm_cmd.header.out.length)
+-          != sizeof(tpm_cmd.header.out) + sizeof(u32) + 3 * sizeof(u32))
++      if (be32_to_cpu(tpm_cmd.header.out.return_code)
++          != 3 * sizeof(u32))
+               return;
+-
+       duration_cap = &tpm_cmd.params.getcap_out.cap.duration;
+       chip->vendor.duration[TPM_SHORT] =
+           usecs_to_jiffies(be32_to_cpu(duration_cap->tpm_short));
+@@ -925,18 +923,6 @@ ssize_t tpm_show_caps_1_2(struct device
+ }
+ EXPORT_SYMBOL_GPL(tpm_show_caps_1_2);
+-ssize_t tpm_show_timeouts(struct device *dev, struct device_attribute *attr,
+-                        char *buf)
+-{
+-      struct tpm_chip *chip = dev_get_drvdata(dev);
+-
+-      return sprintf(buf, "%d %d %d\n",
+-                     jiffies_to_usecs(chip->vendor.duration[TPM_SHORT]),
+-                     jiffies_to_usecs(chip->vendor.duration[TPM_MEDIUM]),
+-                     jiffies_to_usecs(chip->vendor.duration[TPM_LONG]));
+-}
+-EXPORT_SYMBOL_GPL(tpm_show_timeouts);
+-
+ ssize_t tpm_store_cancel(struct device *dev, struct device_attribute *attr,
+                       const char *buf, size_t count)
+ {
+--- a/drivers/char/tpm/tpm.h
++++ b/drivers/char/tpm/tpm.h
+@@ -56,8 +56,6 @@ extern ssize_t tpm_show_owned(struct dev
+                               char *);
+ extern ssize_t tpm_show_temp_deactivated(struct device *,
+                                        struct device_attribute *attr, char *);
+-extern ssize_t tpm_show_timeouts(struct device *,
+-                               struct device_attribute *attr, char *);
+ struct tpm_chip;
+--- a/drivers/char/tpm/tpm_tis.c
++++ b/drivers/char/tpm/tpm_tis.c
+@@ -376,7 +376,6 @@ static DEVICE_ATTR(temp_deactivated, S_I
+                  NULL);
+ static DEVICE_ATTR(caps, S_IRUGO, tpm_show_caps_1_2, NULL);
+ static DEVICE_ATTR(cancel, S_IWUSR | S_IWGRP, NULL, tpm_store_cancel);
+-static DEVICE_ATTR(timeouts, S_IRUGO, tpm_show_timeouts, NULL);
+ static struct attribute *tis_attrs[] = {
+       &dev_attr_pubek.attr,
+@@ -386,8 +385,7 @@ static struct attribute *tis_attrs[] = {
+       &dev_attr_owned.attr,
+       &dev_attr_temp_deactivated.attr,
+       &dev_attr_caps.attr,
+-      &dev_attr_cancel.attr,
+-      &dev_attr_timeouts.attr, NULL,
++      &dev_attr_cancel.attr, NULL,
+ };
+ static struct attribute_group tis_attr_grp = {
index 7288650d5811dd4b0a388cf6c7779bf4e1430746..e9ba49e55cd96745f09d16f13e565d15f8269264 100644 (file)
@@ -52,3 +52,19 @@ hwmon-jc42-do-not-allow-writing-to-locked-registers.patch
 netfilter-fix-race-in-conntrack-between-dump_table-and-destroy.patch
 netfilter-ctnetlink-fix-missing-refcount-increment-during-dumps.patch
 radio-aimslab.c-needs-include-linux-delay.h.patch
+arm-ensure-predictable-endian-state-on-signal-handler-entry.patch
+arm-keep-exit-text-data-around-for-smp_on_up.patch
+cifs-fix-handling-of-scopeid-in-cifs_convert_address.patch
+cifs-fix-regression-in-lanman-lm-auth-code.patch
+acer-wmi-fix-capitalisation-of-guid.patch
+pcmcia-re-enable-zoomed-video-support.patch
+ecryptfs-copy-up-lower-inode-attrs-in-getattr.patch
+genirq-prevent-access-beyond-allocated_irqs-bitmap.patch
+genirq-disable-the-shirq_debug-call-in-request_threaded_irq-for-now.patch
+perf-fix-throttle-logic.patch
+asoc-wm8903-fix-mic-detection-enable-logic.patch
+net-can-janz-ican3-world-writable-sysfs-termination-file.patch
+platform-x86-acer-wmi-world-writable-sysfs-threeg-file.patch
+platform-x86-asus_acpi-world-writable-procfs-files.patch
+platform-x86-tc1100-wmi-world-writable-sysfs-wireless-and-jogdial-files.patch
+revert-tpm_tis-use-timeouts-returned-from-tpm.patch