* [PATCH 1/2] powerpc/trace elfv1: Update syscall name matching logic @ 2018-05-04 13:14 Naveen N. Rao 2018-05-04 13:14 ` [PATCH 2/2] powerpc/trace: Update syscall name matching logic to account for ppc_ prefix Naveen N. Rao 2018-05-09 14:59 ` [1/2] powerpc/trace elfv1: Update syscall name matching logic Michael Ellerman 0 siblings, 2 replies; 3+ messages in thread From: Naveen N. Rao @ 2018-05-04 13:14 UTC (permalink / raw) To: Michael Ellerman; +Cc: linuxppc-dev, Dominik Brodowski On powerpc64 ABIv1, we are enabling syscall tracing for only ~20 syscalls. This is due to commit e145242ea0df6 ("syscalls/core, syscalls/x86: Clean up syscall stub naming convention") which has changed the syscall entry wrapper prefix from "SyS" to "__se_sys". Update the logic for ABIv1 to not just skip the initial dot, but also the "__se_sys" prefix. Fixes: commit e145242ea0df6 ("syscalls/core, syscalls/x86: Clean up syscall stub naming convention") Reported-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- arch/powerpc/include/asm/ftrace.h | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h index f7a23c2dce74..731cb4314a42 100644 --- a/arch/powerpc/include/asm/ftrace.h +++ b/arch/powerpc/include/asm/ftrace.h @@ -71,13 +71,9 @@ struct dyn_arch_ftrace { #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME static inline bool arch_syscall_match_sym_name(const char *sym, const char *name) { - /* - * Compare the symbol name with the system call name. Skip the .sys or .SyS - * prefix from the symbol name and the sys prefix from the system call name and - * just match the rest. This is only needed on ppc64 since symbol names on - * 32bit do not start with a period so the generic function will work. - */ - return !strcmp(sym + 4, name + 3); + /* We need to skip past the initial dot, and the __se_sys alias */ + return !strcmp(sym + 1, name) || + (!strncmp(sym, ".__se_sys", 9) && !strcmp(sym + 6, name)); } #endif #endif /* CONFIG_FTRACE_SYSCALLS && !__ASSEMBLY__ */ -- 2.17.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] powerpc/trace: Update syscall name matching logic to account for ppc_ prefix 2018-05-04 13:14 [PATCH 1/2] powerpc/trace elfv1: Update syscall name matching logic Naveen N. Rao @ 2018-05-04 13:14 ` Naveen N. Rao 2018-05-09 14:59 ` [1/2] powerpc/trace elfv1: Update syscall name matching logic Michael Ellerman 1 sibling, 0 replies; 3+ messages in thread From: Naveen N. Rao @ 2018-05-04 13:14 UTC (permalink / raw) To: Michael Ellerman; +Cc: linuxppc-dev, Dominik Brodowski Some syscall entry functions on powerpc are prefixed with ppc_/ppc32_/ppc64_ rather than the usual sys_/__se_sys prefix. fork(), clone(), swapcontext() are some examples of syscalls with such entry points. We need to match against these names when initializing ftrace syscall tracing. Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> --- Tracing fork() and clone() was working so far since those had "ppc_" prefix and we were jumping past the initial 3 characters to account for "SyS_" prefix. We were not enabling tracing for ppc32_/ppc64_ prefixed syscall entry points so far. - Naveen arch/powerpc/include/asm/ftrace.h | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h index 731cb4314a42..331b17b2e46e 100644 --- a/arch/powerpc/include/asm/ftrace.h +++ b/arch/powerpc/include/asm/ftrace.h @@ -67,13 +67,30 @@ struct dyn_arch_ftrace { #endif #if defined(CONFIG_FTRACE_SYSCALLS) && !defined(__ASSEMBLY__) -#ifdef PPC64_ELF_ABI_v1 +/* + * Some syscall entry functions on powerpc start with "ppc_" (fork and clone, + * for instance) or ppc32_/ppc64_. We should also match the sys_ variant with + * those. + */ #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME +#ifdef PPC64_ELF_ABI_v1 static inline bool arch_syscall_match_sym_name(const char *sym, const char *name) { /* We need to skip past the initial dot, and the __se_sys alias */ return !strcmp(sym + 1, name) || - (!strncmp(sym, ".__se_sys", 9) && !strcmp(sym + 6, name)); + (!strncmp(sym, ".__se_sys", 9) && !strcmp(sym + 6, name)) || + (!strncmp(sym, ".ppc_", 5) && !strcmp(sym + 5, name + 4)) || + (!strncmp(sym, ".ppc32_", 7) && !strcmp(sym + 7, name + 4)) || + (!strncmp(sym, ".ppc64_", 7) && !strcmp(sym + 7, name + 4)); +} +#else +static inline bool arch_syscall_match_sym_name(const char *sym, const char *name) +{ + return !strcmp(sym, name) || + (!strncmp(sym, "__se_sys", 8) && !strcmp(sym + 5, name)) || + (!strncmp(sym, "ppc_", 4) && !strcmp(sym + 4, name + 4)) || + (!strncmp(sym, "ppc32_", 6) && !strcmp(sym + 6, name + 4)) || + (!strncmp(sym, "ppc64_", 6) && !strcmp(sym + 6, name + 4)); } #endif #endif /* CONFIG_FTRACE_SYSCALLS && !__ASSEMBLY__ */ -- 2.17.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [1/2] powerpc/trace elfv1: Update syscall name matching logic 2018-05-04 13:14 [PATCH 1/2] powerpc/trace elfv1: Update syscall name matching logic Naveen N. Rao 2018-05-04 13:14 ` [PATCH 2/2] powerpc/trace: Update syscall name matching logic to account for ppc_ prefix Naveen N. Rao @ 2018-05-09 14:59 ` Michael Ellerman 1 sibling, 0 replies; 3+ messages in thread From: Michael Ellerman @ 2018-05-09 14:59 UTC (permalink / raw) To: Naveen N. Rao; +Cc: linuxppc-dev, Dominik Brodowski On Fri, 2018-05-04 at 13:14:24 UTC, "Naveen N. Rao" wrote: > On powerpc64 ABIv1, we are enabling syscall tracing for only ~20 > syscalls. This is due to commit e145242ea0df6 ("syscalls/core, > syscalls/x86: Clean up syscall stub naming convention") which has > changed the syscall entry wrapper prefix from "SyS" to "__se_sys". > > Update the logic for ABIv1 to not just skip the initial dot, but also > the "__se_sys" prefix. > > Fixes: commit e145242ea0df6 ("syscalls/core, syscalls/x86: Clean up syscall stub naming convention") > Reported-by: Michael Ellerman <mpe@ellerman.id.au> > Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Series applied to powerpc fixes, thanks. https://git.kernel.org/powerpc/c/0b7758aaf6543b9a10c8671db559e9 cheers ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-05-09 14:59 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-05-04 13:14 [PATCH 1/2] powerpc/trace elfv1: Update syscall name matching logic Naveen N. Rao 2018-05-04 13:14 ` [PATCH 2/2] powerpc/trace: Update syscall name matching logic to account for ppc_ prefix Naveen N. Rao 2018-05-09 14:59 ` [1/2] powerpc/trace elfv1: Update syscall name matching logic Michael Ellerman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).