]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
2 more .25 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 16 Aug 2008 22:10:58 +0000 (15:10 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 16 Aug 2008 22:10:58 +0000 (15:10 -0700)
queue-2.6.25/series
queue-2.6.25/sparc64-do-not-clobber-g7-in-setcontext-trap.patch [new file with mode: 0644]
queue-2.6.25/sparc64-futex_op_andn-fix.patch [new file with mode: 0644]

index 0441ae3d2f90d118db620171fe189aa4168d2224..59bdc24bb4de6f128c3a2f06b42c1a83d7d67533 100644 (file)
@@ -22,3 +22,5 @@ acer-wmi-fix-wireless-and-bluetooth-on-early-amw0-v2-laptops.patch
 dccp-change-l-r-must-have-at-least-one-byte-in-the-dccpsf_val-field.patch
 random32-seeding-improvement.patch
 ipv6-fix-ip6_xmit-to-send-fragments-if-ipfragok-is-true.patch
+sparc64-futex_op_andn-fix.patch
+sparc64-do-not-clobber-g7-in-setcontext-trap.patch
diff --git a/queue-2.6.25/sparc64-do-not-clobber-g7-in-setcontext-trap.patch b/queue-2.6.25/sparc64-do-not-clobber-g7-in-setcontext-trap.patch
new file mode 100644 (file)
index 0000000..a1e7abf
--- /dev/null
@@ -0,0 +1,44 @@
+From 3d39dbeb64a245884b695703c40fac123963f64e Mon Sep 17 00:00:00 2001
+From: David S. Miller <davem@davemloft.net>
+Date: Thu, 31 Jul 2008 20:40:46 -0700
+Subject: sparc64: Do not clobber %g7 in setcontext() trap.
+Message-Id: <20080805.183521.140203612.davem@davemloft.net>
+
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit 0a4949c4414af2eb91414bcd8e2a8ac3706f7dde ]
+
+That's the userland thread register, so we should never try to change
+it like this.
+
+Based upon glibc bug nptl/6577 and suggestions by Jakub Jelinek.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/sparc64/kernel/signal.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/arch/sparc64/kernel/signal.c
++++ b/arch/sparc64/kernel/signal.c
+@@ -2,7 +2,7 @@
+  *  arch/sparc64/kernel/signal.c
+  *
+  *  Copyright (C) 1991, 1992  Linus Torvalds
+- *  Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
++ *  Copyright (C) 1995, 2008 David S. Miller (davem@davemloft.net)
+  *  Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
+  *  Copyright (C) 1997 Eddie C. Dost   (ecd@skynet.be)
+  *  Copyright (C) 1997,1998 Jakub Jelinek   (jj@sunsite.mff.cuni.cz)
+@@ -90,7 +90,9 @@ asmlinkage void sparc64_set_context(stru
+       err |= __get_user(regs->u_regs[UREG_G4], (&(*grp)[MC_G4]));
+       err |= __get_user(regs->u_regs[UREG_G5], (&(*grp)[MC_G5]));
+       err |= __get_user(regs->u_regs[UREG_G6], (&(*grp)[MC_G6]));
+-      err |= __get_user(regs->u_regs[UREG_G7], (&(*grp)[MC_G7]));
++
++      /* Skip %g7 as that's the thread register in userspace.  */
++
+       err |= __get_user(regs->u_regs[UREG_I0], (&(*grp)[MC_O0]));
+       err |= __get_user(regs->u_regs[UREG_I1], (&(*grp)[MC_O1]));
+       err |= __get_user(regs->u_regs[UREG_I2], (&(*grp)[MC_O2]));
diff --git a/queue-2.6.25/sparc64-futex_op_andn-fix.patch b/queue-2.6.25/sparc64-futex_op_andn-fix.patch
new file mode 100644 (file)
index 0000000..026d238
--- /dev/null
@@ -0,0 +1,40 @@
+From aff8ea55c7083f6fee6cd13f85f875eec3bf40a3 Mon Sep 17 00:00:00 2001
+From: Mikael Pettersson <mikpe@it.uu.se>
+Date: Wed, 30 Jul 2008 15:40:50 -0700
+Subject: [PATCH] sparc64: FUTEX_OP_ANDN fix
+Message-Id: <20080805.183521.140203612.davem@davemloft.net>
+
+From: Mikael Pettersson <mikpe@it.uu.se>
+
+[ Upstream commit d72609e17fd93bb2f7e0f7e1bdc70b6d20e43843 ]
+
+Correct sparc64's implementation of FUTEX_OP_ANDN to do a
+bitwise negate of the oparg parameter before applying the
+AND operation. All other archs that support FUTEX_OP_ANDN
+either negate oparg explicitly (frv, ia64, mips, sh, x86),
+or do so indirectly by using an and-not instruction (powerpc).
+Since sparc64 has and-not, I chose to use that solution.
+
+I've not found any use of FUTEX_OP_ANDN in glibc so the
+impact of this bug is probably minor. But other user-space
+components may try to use it so it should still get fixed.
+
+Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/asm-sparc64/futex.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/asm-sparc64/futex.h
++++ b/include/asm-sparc64/futex.h
+@@ -59,7 +59,7 @@ static inline int futex_atomic_op_inuser
+               __futex_cas_op("or\t%2, %4, %1", ret, oldval, uaddr, oparg);
+               break;
+       case FUTEX_OP_ANDN:
+-              __futex_cas_op("and\t%2, %4, %1", ret, oldval, uaddr, oparg);
++              __futex_cas_op("andn\t%2, %4, %1", ret, oldval, uaddr, oparg);
+               break;
+       case FUTEX_OP_XOR:
+               __futex_cas_op("xor\t%2, %4, %1", ret, oldval, uaddr, oparg);