lkml.org 
[lkml]   [2010]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 41/43] ptrace, um: cleanup arch_ptrace()
    Date
    remove unnecessary castings using void pointer and fix copy_to_user() return
    value.

    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Cc: Jeff Dike <jdike@addtoit.com>
    ---
    arch/um/kernel/ptrace.c | 23 +++++++++++------------
    arch/um/sys-x86_64/ptrace.c | 7 +++----
    2 files changed, 14 insertions(+), 16 deletions(-)

    diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c
    index 963d82b..137a1bc 100644
    --- a/arch/um/kernel/ptrace.c
    +++ b/arch/um/kernel/ptrace.c
    @@ -46,7 +46,7 @@ long arch_ptrace(struct task_struct *child, long request,
    unsigned long addr, unsigned long data)
    {
    int i, ret;
    - unsigned long __user *p = (void __user *)data;
    + void __user *p = (void __user *)data;

    switch (request) {
    /* read word at location addr. */
    @@ -78,12 +78,14 @@ long arch_ptrace(struct task_struct *child, long request,

    #ifdef PTRACE_GETREGS
    case PTRACE_GETREGS: { /* Get all gp regs from the child. */
    + unsigned long tmp;
    if (!access_ok(VERIFY_WRITE, p, MAX_REG_OFFSET)) {
    ret = -EIO;
    break;
    }
    for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) {
    - __put_user(getreg(child, i), p);
    + tmp = getreg(child, i);
    + __copy_to_user(p, &tmp, sizeof(tmp));
    p++;
    }
    ret = 0;
    @@ -98,7 +100,7 @@ long arch_ptrace(struct task_struct *child, long request,
    break;
    }
    for ( i = 0; i < MAX_REG_OFFSET; i += sizeof(long) ) {
    - __get_user(tmp, p);
    + __copy_from_user(&tmp, p, sizeof(tmp));
    putreg(child, i, tmp);
    p++;
    }
    @@ -108,24 +110,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(p, 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(p, 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, p);
    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, p);
    break;

    case PTRACE_FAULTINFO: {
    @@ -135,7 +133,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;
    }

    diff --git a/arch/um/sys-x86_64/ptrace.c b/arch/um/sys-x86_64/ptrace.c
    index 67e6368..f436136 100644
    --- a/arch/um/sys-x86_64/ptrace.c
    +++ b/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;
    }

    --
    1.7.2.2


    \
     
     \ /
      Last update: 2010-08-27 11:51    [W:0.023 / U:30.912 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site