This intends to remove the last bit of entanglement with core ptraceimplementation details in arch code's arch_ptrace and arch_compat_ptrace.Those functions should be responsible for handling arch-specific requests,and nothing else. After this any future churn in the core ptrace internalsneed not translate into any churn in the arch code.

This changes the signature of the arch_ptrace and compat_arch_ptracefunctions. They now return int and take a new long *retval argument.On most machines, arch_ptrace only returns 0 or -error; there no changeis required except ignoring the new argument. A few machines return anonzero success value by calling force_successful_syscall_return().Those machines must change to instead return 0 and set *retval to theuser return value.

arch_ptrace and compat_arch_ptrace can now return 1 instead of callingptrace_request and compat_ptrace_request. This leaves more latitudefor the machine-independent ptrace implementation code to changewithout requiring any more updates in the arch code.

switch (request) { /* When I and D space are separate, these will need to be fixed. */@@ -275,14 +276,14 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) if (copied != sizeof(tmp)) break;