]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dtrace: use syscall_get_nr() to obtain syscall number
authorKris Van Hees <kris.van.hees@oracle.com>
Wed, 2 Sep 2015 23:21:20 +0000 (19:21 -0400)
committerNick Alcock <nick.alcock@oracle.com>
Fri, 4 Sep 2015 21:39:59 +0000 (22:39 +0100)
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 <kris.van.hees@oracle.com>
Acked-by: Nick Alcock <nick.alcock@oracle.com>
arch/x86/kernel/dtrace_syscall.c

index d18e638e30fd4c75b3d69035a7333057aa3f9996..5f4c3fbcd77f4e7fc4f26c6eb591e20dfd5b1b54 100644 (file)
@@ -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];