Messages in this thread | | | From | Mathieu Malaterre <> | Date | Mon, 28 May 2018 21:25:55 +0200 | Subject | Re: [PATCH][RFC] [powerpc] arch_ptrace() uses of access_ok() are pointless |
| |
On Mon, May 28, 2018 at 12:34 AM, Al Viro <viro@zeniv.linux.org.uk> wrote: > make it use copy_{from,to}_user(), rather than access_ok() + > __copy_... > > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> > --- > arch/powerpc/kernel/ptrace.c | 22 +++++++--------------- > 1 file changed, 7 insertions(+), 15 deletions(-) > > diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c > index d23cf632edf0..d8b0fd2fa3aa 100644 > --- a/arch/powerpc/kernel/ptrace.c > +++ b/arch/powerpc/kernel/ptrace.c > @@ -3081,27 +3081,19 @@ long arch_ptrace(struct task_struct *child, long request, > #endif /* CONFIG_HAVE_HW_BREAKPOINT */ > #endif /* CONFIG_PPC_ADV_DEBUG_REGS */ > > - if (!access_ok(VERIFY_WRITE, datavp, > - sizeof(struct ppc_debug_info))) > + if (unlikely(copy_to_user(datavp, &dbginfo, > + sizeof(struct ppc_debug_info)))
Maybe this is just an RFC, but:
CALL ../arch/powerpc/kernel/systbl_chk.sh ../arch/powerpc/kernel/ptrace.c: In function ‘arch_ptrace’: ../arch/powerpc/kernel/ptrace.c:3086:4: error: expected ‘)’ before ‘return’ return -EFAULT; ^~~~~~
Missing closing parenthesis.
> return -EFAULT; > - ret = __copy_to_user(datavp, &dbginfo, > - sizeof(struct ppc_debug_info)) ? > - -EFAULT : 0; > - break; > + return 0; > } > > case PPC_PTRACE_SETHWDEBUG: { > struct ppc_hw_breakpoint bp_info; > > - if (!access_ok(VERIFY_READ, datavp, > - sizeof(struct ppc_hw_breakpoint))) > - return -EFAULT; > - ret = __copy_from_user(&bp_info, datavp, > - sizeof(struct ppc_hw_breakpoint)) ? > - -EFAULT : 0; > - if (!ret) > - ret = ppc_set_hwdebug(child, &bp_info); > - break; > + if (unlikely(copy_from_user(&bp_info, datavp, > + sizeof(struct ppc_hw_breakpoint))) > + return -EFAULT; > + return ppc_set_hwdebug(child, &bp_info); > } > > case PPC_PTRACE_DELHWDEBUG: { > -- > 2.11.0 >
| |