summaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-09-27 19:43:02 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-29 16:12:41 -0700
commit3a1d5c84ed2fa4034f86e3b204129c139471516e (patch)
tree621b55281a61bdac15efe36ea00dd30fdba49cb5 /arch/sparc
parentd6c641026dec68acfb4b0baa98aad960e963ed97 (diff)
downloadlinux-stable-3a1d5c84ed2fa4034f86e3b204129c139471516e.tar.gz
linux-stable-3a1d5c84ed2fa4034f86e3b204129c139471516e.tar.bz2
linux-stable-3a1d5c84ed2fa4034f86e3b204129c139471516e.zip
[SPARC]: Don't zero out tail during copy_from_user_inatomic().
Actually, since we use the same code for all the copying types in and out of userspace, we check at runtime whether preemption is disabled. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/lib/copy_user.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/sparc/lib/copy_user.S b/arch/sparc/lib/copy_user.S
index 577505b692ae..ef095b6c43b1 100644
--- a/arch/sparc/lib/copy_user.S
+++ b/arch/sparc/lib/copy_user.S
@@ -14,6 +14,7 @@
#include <asm/ptrace.h>
#include <asm/asmmacro.h>
#include <asm/page.h>
+#include <asm/thread_info.h>
/* Work around cpp -rob */
#define ALLOC #alloc
@@ -366,6 +367,9 @@ fixupretl:
blu 1f
cmp %o1, %g1
bgeu 1f
+ ld [%g6 + TI_PREEMPT], %g1
+ cmp %g1, 0
+ bne 1f
nop
save %sp, -64, %sp
mov %i0, %o0