From d808516a39d5efbd6e0510e9bb1deb60090f20e5 Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Wed, 27 Oct 2010 15:34:04 -0700 Subject: [PATCH] --- yaml --- r: 218559 b: refs/heads/master c: 0a3d763f1a68c97daae57e40c6d698986d1b38f4 h: refs/heads/master i: 218557: cf5568ae7a2cdb9cfb8db7f843771c5341e5193d 218555: f8235cf9744bc7e756f7079d55edf3835d67ceea 218551: 4ff9d4444b70635c39a207081660e05b00c08f5e 218543: 018b209ca7bd1a7e5e4bd8b6f8c8cc3ed85dc61e 218527: 7fc77a1f7c7eefc0428005faace89b9d8f70d056 218495: 166c1fda812678262fad9821b7295671ed2a75b6 v: v3 --- [refs] | 2 +- trunk/arch/um/kernel/ptrace.c | 18 ++++++++---------- trunk/arch/um/sys-x86_64/ptrace.c | 7 +++---- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 81cec261c3e3..2a23ed80eb16 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8c0acac3676103113a2e259291a07c073ac07879 +refs/heads/master: 0a3d763f1a68c97daae57e40c6d698986d1b38f4 diff --git a/trunk/arch/um/kernel/ptrace.c b/trunk/arch/um/kernel/ptrace.c index 963d82bdec06..a5e33f29bbeb 100644 --- a/trunk/arch/um/kernel/ptrace.c +++ b/trunk/arch/um/kernel/ptrace.c @@ -47,6 +47,7 @@ long arch_ptrace(struct task_struct *child, long request, { int i, ret; unsigned long __user *p = (void __user *)data; + void __user *vp = p; switch (request) { /* read word at location addr. */ @@ -108,24 +109,20 @@ long arch_ptrace(struct task_struct *child, long request, #endif #ifdef PTRACE_GETFPREGS case PTRACE_GETFPREGS: /* Get the child FPU state. */ - ret = get_fpregs((struct user_i387_struct __user *) data, - child); + ret = get_fpregs(vp, child); break; #endif #ifdef PTRACE_SETFPREGS case PTRACE_SETFPREGS: /* Set the child FPU state. */ - ret = set_fpregs((struct user_i387_struct __user *) data, - child); + ret = set_fpregs(vp, child); break; #endif case PTRACE_GET_THREAD_AREA: - ret = ptrace_get_thread_area(child, addr, - (struct user_desc __user *) data); + ret = ptrace_get_thread_area(child, addr, vp); break; case PTRACE_SET_THREAD_AREA: - ret = ptrace_set_thread_area(child, addr, - (struct user_desc __user *) data); + ret = ptrace_set_thread_area(child, addr, datavp); break; case PTRACE_FAULTINFO: { @@ -135,7 +132,8 @@ long arch_ptrace(struct task_struct *child, long request, * On i386, ptrace_faultinfo is smaller! */ ret = copy_to_user(p, &child->thread.arch.faultinfo, - sizeof(struct ptrace_faultinfo)); + sizeof(struct ptrace_faultinfo)) ? + -EIO : 0; break; } @@ -159,7 +157,7 @@ long arch_ptrace(struct task_struct *child, long request, #ifdef PTRACE_ARCH_PRCTL case PTRACE_ARCH_PRCTL: /* XXX Calls ptrace on the host - needs some SMP thinking */ - ret = arch_prctl(child, data, (void *) addr); + ret = arch_prctl(child, data, (void __user *) addr); break; #endif default: diff --git a/trunk/arch/um/sys-x86_64/ptrace.c b/trunk/arch/um/sys-x86_64/ptrace.c index 67e63680df28..f43613643cdb 100644 --- a/trunk/arch/um/sys-x86_64/ptrace.c +++ b/trunk/arch/um/sys-x86_64/ptrace.c @@ -179,15 +179,14 @@ long subarch_ptrace(struct task_struct *child, long request, unsigned long addr, unsigned long data) { int ret = -EIO; + void __user *datap = (void __user *) data; switch (request) { case PTRACE_GETFPXREGS: /* Get the child FPU state. */ - ret = get_fpregs((struct user_i387_struct __user *) data, - child); + ret = get_fpregs(datap, child); break; case PTRACE_SETFPXREGS: /* Set the child FPU state. */ - ret = set_fpregs((struct user_i387_struct __user *) data, - child); + ret = set_fpregs(datap, child); break; }