Hi Oleg, 

> 
> I don't have a powerpc machine, but I think this test-case should
> see the difference:

On a powerpc machine, I did verify that the below test-case differs with
your patch. Without the patch it would print the message
"kernel bug: status=857F shouldn't have 0x80"


> 
>       #include <unistd.h>
>       #include <sys/ptrace.h>
>       #include <sys/wait.h>
>       #include <assert.h>
>       #include <stdio.h>
> 
>       int main(void)
>       {
>               int pid, status;
> 
>               if (!(pid = fork())) {
>                       assert(ptrace(PTRACE_TRACEME) == 0);
>                       kill(getpid(), SIGSTOP);
> 
>                       getppid();
> 
>                       return 0;
>               }
> 
>               assert(pid == wait(&status));
>               assert(ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_TRACESYSGOOD) 
> == 0);
> 
>               assert(ptrace(PTRACE_SYSCALL, pid, 0,0) == 0);
>               assert(pid == wait(&status));
> 
>               assert(ptrace(PTRACE_SINGLESTEP, pid, 0,0) == 0);
>               assert(pid == wait(&status));
> 
>               if (status == 0x57F)
>                       return 0;
> 
>               printf("kernel bug: status=%X shouldn't have 0x80\n", status);
>               return 1;
>       }

Reply via email to