lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 18 Mar 2019 14:55:23 +0000 From: Sudeep Holla <sudeep.holla@....com> To: "Dmitry V. Levin" <ldv@...linux.org> Cc: x86@...nel.org, linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org, linuxppc-dev@...ts.ozlabs.org, Catalin Marinas <catalin.marinas@....com>, Will Deacon <will.deacon@....com>, Oleg Nesterov <oleg@...hat.com>, Paul Mackerras <paulus@...ba.org>, Michael Ellerman <mpe@...erman.id.au>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, Richard Weinberger <richard@....at>, jdike@...toit.com, Steve Capper <Steve.Capper@....com>, Haibo Xu <haibo.xu@....com>, Bin Lu <bin.lu@....com>, Andy Lutomirski <luto@...nel.org> Subject: Re: [PATCH v2 2/6] ptrace: introduce ptrace_syscall_enter to consolidate PTRACE_SYSEMU handling On Mon, Mar 18, 2019 at 05:31:47PM +0300, Dmitry V. Levin wrote: > On Mon, Mar 18, 2019 at 10:49:21AM +0000, Sudeep Holla wrote: > > Currently each architecture handles PTRACE_SYSEMU in very similar way. > > It's completely arch independent and can be handled in the code helping > > to consolidate PTRACE_SYSEMU handling. > > > > Let's introduce a hook 'ptrace_syscall_enter' that arch specific syscall > > entry code can call. > > > > Cc: Oleg Nesterov <oleg@...hat.com> > > Signed-off-by: Sudeep Holla <sudeep.holla@....com> > > --- > > include/linux/ptrace.h | 1 + > > kernel/ptrace.c | 22 ++++++++++++++++++++++ > > 2 files changed, 23 insertions(+) > > > > diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h > > index edb9b040c94c..e30f51e3363e 100644 > > --- a/include/linux/ptrace.h > > +++ b/include/linux/ptrace.h > > @@ -407,6 +407,7 @@ static inline void user_single_step_report(struct pt_regs *regs) > > #define current_user_stack_pointer() user_stack_pointer(current_pt_regs()) > > #endif > > > > +extern long ptrace_syscall_enter(struct pt_regs *regs); > > extern int task_current_syscall(struct task_struct *target, long *callno, > > unsigned long args[6], unsigned int maxargs, > > unsigned long *sp, unsigned long *pc); > > diff --git a/kernel/ptrace.c b/kernel/ptrace.c > > index 4fa3b7f4c3c7..c9c505c483df 100644 > > --- a/kernel/ptrace.c > > +++ b/kernel/ptrace.c > > @@ -29,6 +29,7 @@ > > #include <linux/hw_breakpoint.h> > > #include <linux/cn_proc.h> > > #include <linux/compat.h> > > +#include <linux/tracehook.h> > > > > /* > > * Access another process' address space via ptrace. > > @@ -557,6 +558,27 @@ static int ptrace_detach(struct task_struct *child, unsigned int data) > > return 0; > > } > > > > +/* > > + * Hook to check and report for PTRACE_SYSEMU, can be called from arch > > + * arch syscall entry code > > + */ > > +long ptrace_syscall_enter(struct pt_regs *regs) > > +{ > > +#ifdef TIF_SYSCALL_EMU > > + if (test_thread_flag(TIF_SYSCALL_EMU)) { > > + if (tracehook_report_syscall_entry(regs)) > > + /* > > + * We can ignore the return code here as we need > > + * return -1 always for syscall emulation irrespective > > + * of whether the tracehook report fails or succeed. > > + */ > > + ; > > This is problematic as it causes build errors with -Werror=empty-body, > see https://lore.kernel.org/lkml/20181218205305.26647-1-malat@debian.org/ > Thanks for the pointer, will update. -- Regards, Sudeep
Powered by blists - more mailing lists