From: Greg Kroah-Hartman Date: Tue, 2 Apr 2013 00:15:15 +0000 (-0700) Subject: 3.8-stable patches X-Git-Tag: v3.8.6~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7199797d16e7eed08832ac5ab4f725b93cdc43e6;p=thirdparty%2Fkernel%2Fstable-queue.git 3.8-stable patches 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 --- 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 index 00000000000..b665b6246f0 --- /dev/null +++ b/queue-3.8/kernel-signal.c-use-__arch_has_sa_restorer-instead-of-sa_restorer.patch @@ -0,0 +1,40 @@ +From 522cff142d7d2f9230839c9e1f21a4d8bcc22a4a Mon Sep 17 00:00:00 2001 +From: Andrew Morton +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 + +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 +Cc: Emese Revfy +Cc: Emese Revfy +Cc: PaX Team +Cc: Al Viro +Cc: Oleg Nesterov +Cc: "Eric W. Biederman" +Cc: Serge Hallyn +Cc: Julien Tinnes +Signed-off-by: Linus Torvalds +Cc: Ben Hutchings +Signed-off-by: Greg Kroah-Hartman + +--- + 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); diff --git a/queue-3.8/series b/queue-3.8/series index 51fe26aa909..6487e1cbe6c 100644 --- a/queue-3.8/series +++ b/queue-3.8/series @@ -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 index 00000000000..26068e4b05f --- /dev/null +++ b/queue-3.8/signal-define-__arch_has_sa_restorer-so-we-know-whether-to-clear-3.8.patch @@ -0,0 +1,168 @@ +From: Ben Hutchings +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 + +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 +Cc: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + 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 + + #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 + #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 + ++#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 index 00000000000..98ec9f91864 --- /dev/null +++ b/queue-3.8/usb-gadget-udc-core-fix-a-regression-during-gadget-driver-unbinding.patch @@ -0,0 +1,40 @@ +From 511f3c5326eabe1ece35202a404c24c0aeacc246 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Fri, 15 Mar 2013 14:02:14 -0400 +Subject: usb: gadget: udc-core: fix a regression during gadget driver unbinding + +From: Alan Stern + +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 +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + + +--- + 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); + }