[kernel] r15285 - in dists/sid/linux-2.6/debian: . patches/bugfix/sparc patches/series

Aurelien Jarno aurel32 at alioth.debian.org
Sat Feb 27 01:49:54 UTC 2010


Author: aurel32
Date: Sat Feb 27 01:49:52 2010
New Revision: 15285

Log:
* Fix signal stack alignement on sparc64 (Closes: #569797)

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/sparc/stack-alignment.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/10

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Sat Feb 27 01:27:58 2010	(r15284)
+++ dists/sid/linux-2.6/debian/changelog	Sat Feb 27 01:49:52 2010	(r15285)
@@ -6,6 +6,9 @@
   [ Moritz Muehlenhoff ]
   * Enable CONFIG_KEYS_DEBUG_PROC_KEYS (Closes: #400932)
 
+  [ Aurelien Jarno ]
+  * Fix signal stack alignement on sparc64 (Closes: #569797)
+
  -- maximilian attems <maks at debian.org>  Thu, 25 Feb 2010 13:07:47 +0100
 
 linux-2.6 (2.6.32-9) unstable; urgency=high

Added: dists/sid/linux-2.6/debian/patches/bugfix/sparc/stack-alignment.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/sparc/stack-alignment.patch	Sat Feb 27 01:49:52 2010	(r15285)
@@ -0,0 +1,141 @@
+commit 440ab7ac2d6b735fb278a1ff1674f6716314c6bb
+Author: David S. Miller <davem at davemloft.net>
+Date:   Thu Feb 11 12:29:16 2010 -0800
+
+    sparc32: Fix thinko in previous change.
+
+    Should mask stack with 0xf not "0x15".
+
+    Noticed by Blue Swirl <blauwirbel at gmail.com>
+
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+commit f036d9f3985a529a81e582f68aa984eb7b20d54d
+Author: David S. Miller <davem at davemloft.net>
+Date:   Tue Feb 9 16:18:40 2010 -0800
+
+    sparc: Align clone and signal stacks to 16 bytes.
+
+    This is mandatory for 64-bit processes, and doing it also for 32-bit
+    processes saves a conditional in the compat case.
+
+    This fixes the glibc/nptl/tst-stdio1 test case, as well
+    as many others, on 64-bit.
+
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+--- a/arch/sparc/kernel/process_32.c
++++ b/arch/sparc/kernel/process_32.c
+@@ -526,7 +526,7 @@
+ 			 * Set some valid stack frames to give to the child.
+ 			 */
+ 			childstack = (struct sparc_stackf __user *)
+-				(sp & ~0x7UL);
++				(sp & ~0xfUL);
+ 			parentstack = (struct sparc_stackf __user *)
+ 				regs->u_regs[UREG_FP];
+ 
+--- a/arch/sparc/kernel/signal32.c
++++ b/arch/sparc/kernel/signal32.c
+@@ -120,8 +120,8 @@
+ };
+ 
+ /* Align macros */
+-#define SF_ALIGNEDSZ  (((sizeof(struct signal_frame32) + 7) & (~7)))
+-#define RT_ALIGNEDSZ  (((sizeof(struct rt_signal_frame32) + 7) & (~7)))
++#define SF_ALIGNEDSZ  (((sizeof(struct signal_frame32) + 15) & (~15)))
++#define RT_ALIGNEDSZ  (((sizeof(struct rt_signal_frame32) + 15) & (~15)))
+ 
+ int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
+ {
+@@ -420,15 +420,17 @@
+ 			sp = current->sas_ss_sp + current->sas_ss_size;
+ 	}
+ 
++	sp -= framesize;
++
+ 	/* Always align the stack frame.  This handles two cases.  First,
+ 	 * sigaltstack need not be mindful of platform specific stack
+ 	 * alignment.  Second, if we took this signal because the stack
+ 	 * is not aligned properly, we'd like to take the signal cleanly
+ 	 * and report that.
+ 	 */
+-	sp &= ~7UL;
++	sp &= ~15UL;
+ 
+-	return (void __user *)(sp - framesize);
++	return (void __user *) sp;
+ }
+ 
+ static int save_fpu_state32(struct pt_regs *regs, __siginfo_fpu_t __user *fpu)
+--- a/arch/sparc/kernel/signal_64.c
++++ b/arch/sparc/kernel/signal_64.c
+@@ -353,7 +353,7 @@
+ /* Checks if the fp is valid */
+ static int invalid_frame_pointer(void __user *fp, int fplen)
+ {
+-	if (((unsigned long) fp) & 7)
++	if (((unsigned long) fp) & 15)
+ 		return 1;
+ 	return 0;
+ }
+@@ -396,15 +396,17 @@
+ 			sp = current->sas_ss_sp + current->sas_ss_size;
+ 	}
+ 
++	sp -= framesize;
++
+ 	/* Always align the stack frame.  This handles two cases.  First,
+ 	 * sigaltstack need not be mindful of platform specific stack
+ 	 * alignment.  Second, if we took this signal because the stack
+ 	 * is not aligned properly, we'd like to take the signal cleanly
+ 	 * and report that.
+ 	 */
+-	sp &= ~7UL;
++	sp &= ~15UL;
+ 
+-	return (void __user *)(sp - framesize);
++	return (void __user *) sp;
+ }
+ 
+ static inline void
+--- a/arch/sparc/kernel/signal_32.c
++++ b/arch/sparc/kernel/signal_32.c
+@@ -267,15 +267,17 @@
+ 			sp = current->sas_ss_sp + current->sas_ss_size;
+ 	}
+ 
++	sp -= framesize;
++
+ 	/* Always align the stack frame.  This handles two cases.  First,
+ 	 * sigaltstack need not be mindful of platform specific stack
+ 	 * alignment.  Second, if we took this signal because the stack
+ 	 * is not aligned properly, we'd like to take the signal cleanly
+ 	 * and report that.
+ 	 */
+-	sp &= ~7UL;
++	sp &= ~15UL;
+ 
+-	return (void __user *)(sp - framesize);
++	return (void __user *) sp;
+ }
+ 
+ static inline int
+--- a/arch/sparc/kernel/process_64.c
++++ b/arch/sparc/kernel/process_64.c
+@@ -406,11 +406,11 @@
+ 	} else
+ 		__get_user(fp, &(((struct reg_window32 __user *)psp)->ins[6]));
+ 
+-	/* Now 8-byte align the stack as this is mandatory in the
+-	 * Sparc ABI due to how register windows work.  This hides
+-	 * the restriction from thread libraries etc.  -DaveM
++	/* Now align the stack as this is mandatory in the Sparc ABI
++	 * due to how register windows work.  This hides the
++	 * restriction from thread libraries etc.
+ 	 */
+-	csp &= ~7UL;
++	csp &= ~15UL;
+ 
+ 	distance = fp - psp;
+ 	rval = (csp - distance);

Modified: dists/sid/linux-2.6/debian/patches/series/10
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/10	Sat Feb 27 01:27:58 2010	(r15284)
+++ dists/sid/linux-2.6/debian/patches/series/10	Sat Feb 27 01:49:52 2010	(r15285)
@@ -1 +1,2 @@
 + bugfix/all/tcp-fix-ICMP-RTO-war.patch
++ bugfix/sparc/stack-alignment.patch



More information about the Kernel-svn-changes mailing list