On Mon, Nov 14, 2016 at 02:03:45PM +0100, Rabin Vincent wrote: > From: Rabin Vincent <rab...@axis.com> > > ARM has a few system calls (most notably mmap) for which the names of > the functions which are referenced in the syscall table do not match the > names of the syscall tracepoints. As a consequence of this, these > tracepoints are not made available. Implement > arch_syscall_match_sym_name to fix this and allow tracing even these > system calls. > > Signed-off-by: Rabin Vincent <rab...@axis.com> > --- > arch/arm/include/asm/ftrace.h | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h > index bfe2a2f..8467909 100644 > --- a/arch/arm/include/asm/ftrace.h > +++ b/arch/arm/include/asm/ftrace.h > @@ -54,6 +54,27 @@ static inline void *return_address(unsigned int level) > > #define ftrace_return_address(n) return_address(n) > > +#define ARCH_HAS_SYSCALL_MATCH_SYM_NAME > + > +static inline bool arch_syscall_match_sym_name(const char *sym, > + const char *name) > +{ > + /* Skip sys_ */ > + sym += 4; > + name += 4;
Is this really safe? What guarantees that we can wind forward four bytes here? If it's always safe, it needs a better comment than just two words. > + > + if (!strcmp(sym, "mmap2")) > + sym = "mmap_pgoff"; > + else if (!strcmp(sym, "statfs64_wrapper")) > + sym = "statfs64"; > + else if (!strcmp(sym, "fstatfs64_wrapper")) > + sym = "fstatfs64"; > + else if (!strcmp(sym, "arm_fadvise64_64")) > + sym = "fadvise64_64"; > + > + return !strcmp(sym, name); > +} > + > #endif /* ifndef __ASSEMBLY__ */ > > #endif /* _ASM_ARM_FTRACE */ > -- > 2.1.4 > -- RMK's Patch system: http://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net.