Skip to contentSkip to conversation

ftrace/x86: Fix arch_syscall_match_sym_name for x86_64

PATCH In review Jiri Olsa 3 participants 3 messages Apr 24, 2018

Subsystems (2)
lore
Share & tools
lore

Jiri Olsa

author
#0 lore raw

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.

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_*()")
---
 arch/x86/include/asm/ftrace.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/x86/include/asm/ftrace.h +12 -0
index 09ad88572746..7b131ad39ee2 100644
@@ -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
maintainer
#1 lore raw
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 __init code 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_*()")
---
 arch/x86/include/asm/ftrace.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/x86/include/asm/ftrace.h +12 -0
index 09ad88572746..7b131ad39ee2 100644
@@ -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 */
#2 lore raw
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 __init code 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

http://lkml.kernel.org/r/[email protected]

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