]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.8-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 2 Apr 2013 00:15:15 +0000 (17:15 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 2 Apr 2013 00:15:15 +0000 (17:15 -0700)
added patches:
kernel-signal.c-use-__arch_has_sa_restorer-instead-of-sa_restorer.patch
signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch
usb-gadget-udc-core-fix-a-regression-during-gadget-driver-unbinding.patch

queue-3.8/kernel-signal.c-use-__arch_has_sa_restorer-instead-of-sa_restorer.patch [new file with mode: 0644]
queue-3.8/series
queue-3.8/signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch [new file with mode: 0644]
queue-3.8/usb-gadget-udc-core-fix-a-regression-during-gadget-driver-unbinding.patch [new file with mode: 0644]

diff --git a/queue-3.8/kernel-signal.c-use-__arch_has_sa_restorer-instead-of-sa_restorer.patch b/queue-3.8/kernel-signal.c-use-__arch_has_sa_restorer-instead-of-sa_restorer.patch
new file mode 100644 (file)
index 0000000..b665b62
--- /dev/null
@@ -0,0 +1,40 @@
+From 522cff142d7d2f9230839c9e1f21a4d8bcc22a4a Mon Sep 17 00:00:00 2001
+From: Andrew Morton <akpm@linux-foundation.org>
+Date: Wed, 13 Mar 2013 14:59:34 -0700
+Subject: kernel/signal.c: use __ARCH_HAS_SA_RESTORER instead of SA_RESTORER
+
+From: Andrew Morton <akpm@linux-foundation.org>
+
+commit 522cff142d7d2f9230839c9e1f21a4d8bcc22a4a upstream.
+
+__ARCH_HAS_SA_RESTORER is the preferred conditional for use in 3.9 and
+later kernels, per Kees.
+
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Cc: Emese Revfy <re.emese@gmail.com>
+Cc: Emese Revfy <re.emese@gmail.com>
+Cc: PaX Team <pageexec@freemail.hu>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Cc: Oleg Nesterov <oleg@redhat.com>
+Cc: "Eric W. Biederman" <ebiederm@xmission.com>
+Cc: Serge Hallyn <serge.hallyn@canonical.com>
+Cc: Julien Tinnes <jln@google.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Ben Hutchings <ben@decadent.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/signal.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -485,7 +485,7 @@ flush_signal_handlers(struct task_struct
+               if (force_default || ka->sa.sa_handler != SIG_IGN)
+                       ka->sa.sa_handler = SIG_DFL;
+               ka->sa.sa_flags = 0;
+-#ifdef SA_RESTORER
++#ifdef __ARCH_HAS_SA_RESTORER
+               ka->sa.sa_restorer = NULL;
+ #endif
+               sigemptyset(&ka->sa.sa_mask);
index 51fe26aa909297de0fd278917df1cd59a6a7985c..6487e1cbe6cc6a6bdd5b95c96f20e96ee8ac5a91 100644 (file)
@@ -74,3 +74,6 @@ usb-ark3116-fix-use-after-free-in-tiocmiwait.patch
 usb-mct_u232-fix-use-after-free-in-tiocmiwait.patch
 usb-cypress_m8-fix-use-after-free-in-tiocmiwait.patch
 usb-ti_usb_3410_5052-fix-use-after-free-in-tiocmiwait.patch
+usb-gadget-udc-core-fix-a-regression-during-gadget-driver-unbinding.patch
+signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch
+kernel-signal.c-use-__arch_has_sa_restorer-instead-of-sa_restorer.patch
diff --git a/queue-3.8/signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch b/queue-3.8/signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch
new file mode 100644 (file)
index 0000000..26068e4
--- /dev/null
@@ -0,0 +1,168 @@
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sun, 25 Nov 2012 22:24:19 -0500
+Subject: signal: Define __ARCH_HAS_SA_RESTORER so we know whether to clear sa_restorer
+
+From: Ben Hutchings <ben@decadent.org.uk>
+
+Vaguely based on upstream commit 574c4866e33d 'consolidate kernel-side
+struct sigaction declarations'.
+
+flush_signal_handlers() needs to know whether sigaction::sa_restorer
+is defined, not whether SA_RESTORER is defined.  Define the
+__ARCH_HAS_SA_RESTORER macro to indicate this.
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/include/asm/signal.h     |    1 +
+ arch/avr32/include/asm/signal.h   |    1 +
+ arch/cris/include/asm/signal.h    |    1 +
+ arch/h8300/include/asm/signal.h   |    1 +
+ arch/m32r/include/asm/signal.h    |    1 +
+ arch/m68k/include/asm/signal.h    |    1 +
+ arch/mn10300/include/asm/signal.h |    1 +
+ arch/powerpc/include/asm/signal.h |    1 +
+ arch/s390/include/asm/signal.h    |    1 +
+ arch/sparc/include/asm/signal.h   |    2 ++
+ arch/x86/include/asm/signal.h     |    3 +++
+ arch/xtensa/include/asm/signal.h  |    1 +
+ include/uapi/asm-generic/signal.h |    4 ++++
+ 13 files changed, 19 insertions(+)
+
+--- a/arch/arm/include/asm/signal.h
++++ b/arch/arm/include/asm/signal.h
+@@ -29,6 +29,7 @@ struct sigaction {
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/avr32/include/asm/signal.h
++++ b/arch/avr32/include/asm/signal.h
+@@ -29,6 +29,7 @@ struct sigaction {
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/cris/include/asm/signal.h
++++ b/arch/cris/include/asm/signal.h
+@@ -29,6 +29,7 @@ struct sigaction {
+       void (*sa_restorer)(void);
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/h8300/include/asm/signal.h
++++ b/arch/h8300/include/asm/signal.h
+@@ -29,6 +29,7 @@ struct sigaction {
+       void (*sa_restorer)(void);
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/m32r/include/asm/signal.h
++++ b/arch/m32r/include/asm/signal.h
+@@ -22,6 +22,7 @@ struct sigaction {
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/m68k/include/asm/signal.h
++++ b/arch/m68k/include/asm/signal.h
+@@ -29,6 +29,7 @@ struct sigaction {
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/mn10300/include/asm/signal.h
++++ b/arch/mn10300/include/asm/signal.h
+@@ -39,6 +39,7 @@ struct sigaction {
+       __sigrestore_t sa_restorer;
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/arch/powerpc/include/asm/signal.h
++++ b/arch/powerpc/include/asm/signal.h
+@@ -1,6 +1,7 @@
+ #ifndef _ASM_POWERPC_SIGNAL_H
+ #define _ASM_POWERPC_SIGNAL_H
++#define __ARCH_HAS_SA_RESTORER
+ #include <uapi/asm/signal.h>
+ #endif /* _ASM_POWERPC_SIGNAL_H */
+--- a/arch/s390/include/asm/signal.h
++++ b/arch/s390/include/asm/signal.h
+@@ -34,6 +34,7 @@ struct sigaction {
+         void (*sa_restorer)(void);
+         sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+         struct sigaction sa;
+--- a/arch/sparc/include/asm/signal.h
++++ b/arch/sparc/include/asm/signal.h
+@@ -26,5 +26,7 @@ struct k_sigaction {
+       void                    __user *ka_restorer;
+ };
++#define __ARCH_HAS_SA_RESTORER
++
+ #endif /* !(__ASSEMBLY__) */
+ #endif /* !(__SPARC_SIGNAL_H) */
+--- a/arch/x86/include/asm/signal.h
++++ b/arch/x86/include/asm/signal.h
+@@ -31,6 +31,9 @@ typedef sigset_t compat_sigset_t;
+ #include <uapi/asm/signal.h>
+ #ifndef __ASSEMBLY__
+ extern void do_notify_resume(struct pt_regs *, void *, __u32);
++
++#define __ARCH_HAS_SA_RESTORER
++
+ #ifdef __i386__
+ struct old_sigaction {
+       __sighandler_t sa_handler;
+--- a/arch/xtensa/include/asm/signal.h
++++ b/arch/xtensa/include/asm/signal.h
+@@ -21,6 +21,7 @@ struct sigaction {
+       void (*sa_restorer)(void);
+       sigset_t sa_mask;               /* mask last for extensibility */
+ };
++#define __ARCH_HAS_SA_RESTORER
+ struct k_sigaction {
+       struct sigaction sa;
+--- a/include/uapi/asm-generic/signal.h
++++ b/include/uapi/asm-generic/signal.h
+@@ -93,6 +93,10 @@ typedef unsigned long old_sigset_t;
+ #include <asm-generic/signal-defs.h>
++#ifdef SA_RESTORER
++#define __ARCH_HAS_SA_RESTORER
++#endif
++
+ struct sigaction {
+       __sighandler_t sa_handler;
+       unsigned long sa_flags;
diff --git a/queue-3.8/usb-gadget-udc-core-fix-a-regression-during-gadget-driver-unbinding.patch b/queue-3.8/usb-gadget-udc-core-fix-a-regression-during-gadget-driver-unbinding.patch
new file mode 100644 (file)
index 0000000..98ec9f9
--- /dev/null
@@ -0,0 +1,40 @@
+From 511f3c5326eabe1ece35202a404c24c0aeacc246 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Fri, 15 Mar 2013 14:02:14 -0400
+Subject: usb: gadget: udc-core: fix a regression during gadget driver unbinding
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 511f3c5326eabe1ece35202a404c24c0aeacc246 upstream.
+
+This patch (as1666) fixes a regression in the UDC core.  The core
+takes care of unbinding gadget drivers, and it does the unbinding
+before telling the UDC driver to turn off the controller hardware.
+When the call to the udc_stop callback is made, the gadget no longer
+has a driver.  The callback routine should not be invoked with a
+pointer to the old driver; doing so can cause problems (such as
+use-after-free accesses in net2280).
+
+This patch should be applied, with appropriate context changes, to all
+the stable kernels going back to 3.1.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/usb/gadget/udc-core.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/gadget/udc-core.c
++++ b/drivers/usb/gadget/udc-core.c
+@@ -265,7 +265,7 @@ static void usb_gadget_remove_driver(str
+               usb_gadget_disconnect(udc->gadget);
+               udc->driver->disconnect(udc->gadget);
+               udc->driver->unbind(udc->gadget);
+-              usb_gadget_udc_stop(udc->gadget, udc->driver);
++              usb_gadget_udc_stop(udc->gadget, NULL);
+       } else {
+               usb_gadget_stop(udc->gadget, udc->driver);
+       }