x86_64, entry: Treat regs->ax the same in fastpath and slowpath syscalls
authorAndy Lutomirski <luto@amacapital.net>
Fri, 5 Sep 2014 22:13:55 +0000 (15:13 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Mon, 8 Sep 2014 21:14:08 +0000 (14:14 -0700)
commit54eea9957f5763dd1a2555d7e4cb53b4dd389cc6
tree65f301ae08fe3805ee92746e52b6a26139a0b0b9
parente0ffbaabc46db508b8717f023c0ce03b980eefac
x86_64, entry: Treat regs->ax the same in fastpath and slowpath syscalls

For slowpath syscalls, we initialize regs->ax to -ENOSYS and stick
the syscall number into regs->orig_ax prior to any possible tracing
and syscall execution.  This is user-visible ABI used by ptrace
syscall emulation and seccomp.

For fastpath syscalls, there's no good reason not to do the same
thing.  It's even slightly simpler than what we're currently doing.
It probably has no measureable performance impact.  It should have
no user-visible effect.

The purpose of this patch is to prepare for two-phase syscall
tracing, in which the first phase might modify the saved RAX without
leaving the fast path.  This change is just subtle enough that I'm
keeping it separate.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Link: http://lkml.kernel.org/r/01218b493f12ae2f98034b78c9ae085e38e94350.1409954077.git.luto@amacapital.net
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/include/asm/calling.h
arch/x86/kernel/entry_64.S