Merge branch 'origin'
[pandora-kernel.git] / arch / parisc / kernel / ptrace.c
index b6fe202..413292f 100644 (file)
@@ -91,7 +91,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                int copied;
 
 #ifdef __LP64__
-               if (is_compat_task(child)) {
+               if (personality(child->personality) == PER_LINUX32) {
                        unsigned int tmp;
 
                        addr &= 0xffffffffL;
@@ -123,7 +123,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
        case PTRACE_POKEDATA:
                ret = 0;
 #ifdef __LP64__
-               if (is_compat_task(child)) {
+               if (personality(child->personality) == PER_LINUX32) {
                        unsigned int tmp = (unsigned int)data;
                        DBG("sys_ptrace(POKE%s, %d, %lx, %lx)\n",
                                request == PTRACE_POKETEXT ? "TEXT" : "DATA",
@@ -146,7 +146,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
        case PTRACE_PEEKUSR: {
                ret = -EIO;
 #ifdef __LP64__
-               if (is_compat_task(child)) {
+               if (personality(child->personality) == PER_LINUX32) {
                        unsigned int tmp;
 
                        if (addr & (sizeof(int)-1))
@@ -205,7 +205,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                        goto out_tsk;
                }
 #ifdef __LP64__
-               if (is_compat_task(child)) {
+               if (personality(child->personality) == PER_LINUX32) {
                        if (addr & (sizeof(int)-1))
                                goto out_tsk;
                        if ((addr = translate_usr_offset(addr)) < 0)
@@ -264,6 +264,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                 * sigkill.  perhaps it should be put in the status
                 * that it wants to exit.
                 */
+               ret = 0;
                DBG("sys_ptrace(KILL)\n");
                if (child->exit_state == EXIT_ZOMBIE)   /* already dead */
                        goto out_tsk;
@@ -344,11 +345,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
 
        case PTRACE_GETEVENTMSG:
                 ret = put_user(child->ptrace_message, (unsigned int __user *) data);
-               goto out;
+               goto out_tsk;
 
        default:
                ret = ptrace_request(child, request, addr, data);
-               goto out;
+               goto out_tsk;
        }
 
 out_wake_notrap: