vserver 1.9.5.x5
[linux-2.6.git] / arch / x86_64 / ia32 / ptrace32.c
index 4445da8..b98b6d2 100644 (file)
@@ -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;
-               /* 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;
@@ -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));
-               child->used_math = 1;
+               set_stopped_child_used_math(child);
                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: