git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
arch
/
x86_64
/
ia32
/
ptrace32.c
diff --git
a/arch/x86_64/ia32/ptrace32.c
b/arch/x86_64/ia32/ptrace32.c
index
4445da8
..
b98b6d2
100644
(file)
--- a/
arch/x86_64/ia32/ptrace32.c
+++ b/
arch/x86_64/ia32/ptrace32.c
@@
-109,7
+109,8
@@
static int putreg32(struct task_struct *child, unsigned regno, u32 val)
case offsetof(struct user32, u_debugreg[7]):
val &= ~DR_CONTROL_RESERVED;
case offsetof(struct user32, u_debugreg[7]):
val &= ~DR_CONTROL_RESERVED;
- /* You are not expected to understand this ... I don't neither. */
+ /* See arch/i386/kernel/ptrace.c for an explanation of
+ * this awkward check.*/
for(i=0; i<4; i++)
if ((0x5454 >> ((val >> (16 + 4*i)) & 0xf)) & 1)
return -EIO;
for(i=0; i<4; i++)
if ((0x5454 >> ((val >> (16 + 4*i)) & 0xf)) & 1)
return -EIO;
@@
-357,14
+358,14
@@
asmlinkage long sys32_ptrace(long request, u32 pid, u32 addr, u32 data)
break;
/* no checking to be bug-to-bug compatible with i386 */
__copy_from_user(&child->thread.i387.fxsave, u, sizeof(*u));
break;
/* no checking to be bug-to-bug compatible with i386 */
__copy_from_user(&child->thread.i387.fxsave, u, sizeof(*u));
-
child->used_math = 1
;
+
set_stopped_child_used_math(child)
;
child->thread.i387.fxsave.mxcsr &= mxcsr_feature_mask;
ret = 0;
break;
}
case PTRACE_GETEVENTMSG:
child->thread.i387.fxsave.mxcsr &= mxcsr_feature_mask;
ret = 0;
break;
}
case PTRACE_GETEVENTMSG:
- ret = put_user(child->ptrace_message,(unsigned int __user *)
(u64)data
);
+ ret = put_user(child->ptrace_message,(unsigned int __user *)
compat_ptr(data)
);
break;
default:
break;
default: