ftrace/x86: Fix arch_syscall_match_sym_name for x86_64
PATCH 1/1 ftrace/x86: Fix arch_syscall_match_sym_name for x86_64
Recent commit changed the name prefix of syscalls for x86_64 (check the 'Fixes:' for commit number).
The names switch from "sys_" prefix to ""__x64_sys_", which made the default matching function always fail.
Consequently the ftrace syscall __init code could not match any syscall metadata so the "syscall" events vanished. This fix returns them back.
--- arch/x86/include/asm/ftrace.h | 12 ++++++++++++ 1 file changed, 12 insertions(+)
arch/x86/include/asm/ftrace.h +12 -0
@@ -67,6 +67,18 @@ static inline bool arch_trace_is_compat_syscall(struct pt_regs *regs)return false; }#endif /* CONFIG_FTRACE_SYSCALLS && CONFIG_IA32_EMULATION */ + +#ifdef CONFIG_X86_64 +#define ARCH_HAS_SYSCALL_MATCH_SYM_NAME 1 +static inline bool arch_syscall_match_sym_name (const char *sym,const char *name) +{ +/* +* Skip the __x64_sys_ prefix and compare the +* syscall name only. +*/ +return !strcmp (sym +9 , name +3 ); +} +#endif /* CONFIG_X86_64 */ #endif /* !__ASSEMBLY__ && !COMPILE_OFFSETS */ #endif /* _ASM_X86_FTRACE_H */
Signature · 1 line
2.13.6
Steven Rostedt
maintainerQuoted 10 lines · On Tue, 24 Apr 2018 12:17:38 +0200 Jiri Olsa <[email protected]> wrote:
Recent commit changed the name prefix of syscalls for
x86_64(check the 'Fixes:' for commit number).The names switch from "
sys_" prefix to ""__x64_sys_", which made the default matching function always fail.Consequently the ftrace syscall
__initcode could not match any syscall metadata so the "syscall" events vanished. This fix returns them back.
Hi Jiri,
I already fixed it and it's queued it my tree. I'm waiting for some other patches that are waiting for review so I can start testing and push to Linus.
Also, this was half the fix, the total fix is here:
http://lkml.kernel.org/r/[email protected]
I think I'm done waiting, I'll start testing and get my queue out. If the other patches don't get the proper acks, I'm not taking them.
Thanks,
-- Steve
Quoted 31 lines
Cc Andy Lutomirski <[email protected]>Cc Dominik Brodowski <[email protected]>Fixes d5a00528b58c ("syscalls/core, syscalls/x86: Rename struct pt_regs-based sys_*() to __x64_sys_*()")Signed-off-by Jiri Olsa <[email protected]>--- arch/x86/include/asm/ftrace.h | 12 ++++++++++++ 1 file changed, 12 insertions(+)arch/x86/include/asm/ftrace.h +12
-0@@ -67,6 +67,18 @@ static inline bool arch_trace_is_compat_syscall(struct pt_regs *regs)return false; }#endif /* CONFIG_FTRACE_SYSCALLS && CONFIG_IA32_EMULATION */ + +#ifdef CONFIG_X86_64 +#define ARCH_HAS_SYSCALL_MATCH_SYM_NAME 1 +static inline bool arch_syscall_match_sym_name (const char *sym,const char *name) +{ +/* +* Skip the __x64_sys_ prefix and compare the +* syscall name only. +*/ +return !strcmp (sym +9 , name +3 ); +} +#endif /* CONFIG_X86_64 */ #endif /* !__ASSEMBLY__ && !COMPILE_OFFSETS */ #endif /* _ASM_X86_FTRACE_H */
Quoted 14 lines · Steven Rostedt
Quoted 10 lines · On Tue, 24 Apr 2018 12:17:38 +0200 Jiri Olsa <[email protected]> wrote:
Recent commit changed the name prefix of syscalls for
x86_64(check the 'Fixes:' for commit number).The names switch from "
sys_" prefix to ""__x64_sys_", which made the default matching function always fail.Consequently the ftrace syscall
__initcode could not match any syscall metadata so the "syscall" events vanished. This fix returns them back.
Quoted 7 lines
Hi Jiri,
I already fixed it and it's queued it my tree. I'm waiting for some other patches that are waiting for review so I can start testing and push to Linus.
Also, this was half the fix, the total fix is here:
yep, that's why I enclosed it to CONFIG_X86_64 ;-)
Quoted 2 lines
after long time I needed 'syscalls' events and couldn't believe my eyes ;-)
Quoted 3 lines
I think I'm done waiting, I'll start testing and get my queue out. If the other patches don't get the proper acks, I'm not taking them.
cool, I'll stick with my change for now and rebase when it's in
thanks,
jirka