2018-01-18 18:37 GMT+08:00 Arnd Bergmann <arnd@xxxxxxxx>: > On Mon, Jan 15, 2018 at 6:53 AM, Greentime Hu <green.hu@xxxxxxxxx> wrote: >> From: Greentime Hu <greentime@xxxxxxxxxxxxx> >> >> This patch adds ptrace support. >> >> Signed-off-by: Vincent Chen <vincentc@xxxxxxxxxxxxx> >> Signed-off-by: Greentime Hu <greentime@xxxxxxxxxxxxx> > > I must have missed this patch earlier, unfortunately I don't think > this is ready: > >> +long arch_ptrace(struct task_struct *child, long request, unsigned long addr, >> + unsigned long data) >> +{ >> + int ret; >> + >> + switch (request) { >> + case PTRACE_PEEKUSR: >> + ret = >> + ptrace_read_user(child, addr, (unsigned long __user *)data); >> + break; >> + >> + case PTRACE_POKEUSR: >> + ret = ptrace_write_user(child, addr, data); >> + break; >> + >> + case PTRACE_GETREGS: >> + ret = ptrace_getregs(child, (void __user *)data); >> + break; >> + >> + case PTRACE_SETREGS: >> + ret = ptrace_setregs(child, (void __user *)data); >> + break; >> + >> + case PTRACE_GETFPREGS: >> + ret = ptrace_getfpregs(child, (void __user *)data); >> + break; >> + >> + case PTRACE_SETFPREGS: >> + ret = ptrace_setfpregs(child, (void __user *)data); >> + break; >> + >> + default: >> + ret = ptrace_request(child, request, addr, data); >> + break; >> + } >> + >> + return ret; >> +} > > It appears that you are implementing the old-style ptrace handling > with architecture specific commands. Please have a look at how > this is done in risc-v or arm64. If this takes more too much time > to address, I'd suggest using an empty stub function for sys_ptrace > and adding it back at a later point, but not send the current version > upstream. > > Arnd Dear Arnd: Thanks for your comments. After referring to risc-v and arm64, I realize that PTRACE_GETREGSET and PTRACE_SETREGSET is used to replace arch specific command. The needed port for the two ptrace commands had done in current version patch. Could I keep them and just removing the code for old-style ptrace handling in the next version patch? Thanks Vincent