From: Kris Van Hees Date: Wed, 2 Sep 2015 23:21:20 +0000 (-0400) Subject: dtrace: use syscall_get_nr() to obtain syscall number X-Git-Tag: v4.1.12-92~284^2~2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=5c5279ca26cd0733ddff0e5b2b91ec2704a9a103;p=users%2Fjedix%2Flinux-maple.git dtrace: use syscall_get_nr() to obtain syscall number Rather than trying to get the syscall number directly from %rax on x86_64, which is error prone due to compiler changes causing that register to get clobbered, we use the syscall_get_nr() function to get the same information. Orabug: 21630345 Signed-off-by: Kris Van Hees Acked-by: Nick Alcock --- diff --git a/arch/x86/kernel/dtrace_syscall.c b/arch/x86/kernel/dtrace_syscall.c index d18e638e30fd4..5f4c3fbcd77f4 100644 --- a/arch/x86/kernel/dtrace_syscall.c +++ b/arch/x86/kernel/dtrace_syscall.c @@ -69,10 +69,6 @@ static systrace_info_t systrace_info = }; -/* - * The stack protector has a tendency to clobber %rax in the prologue. - */ -__attribute__((__optimize__("no-stack-protector"))) asmlinkage long systrace_syscall(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5) { @@ -81,7 +77,7 @@ asmlinkage long systrace_syscall(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, dtrace_id_t id; dtrace_syscalls_t *sc; - asm volatile("movq %%rax,%0" : "=m"(sysnum)); + sysnum = syscall_get_nr(current, current_pt_regs()); sc = &systrace_info.sysent[sysnum];