BACKPORT: arm64: ptrace: allow tracer to skip a system call

If tracer modifies a syscall number to -1, this traced system call should
be skipped with a return value specified in x0.
This patch implements this semantics.

Please note:
* syscall entry tracing and syscall exit tracing (ftrace tracepoint and
  audit) are always executed, if enabled, even when skipping a system call
  (that is, -1).
  In this way, we can avoid a potential bug where audit_syscall_entry()
  might be called without audit_syscall_exit() at the previous system call
  being called, that would cause OOPs in audit_syscall_entry().

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
[will: fixed up conflict with blr rework]
Signed-off-by: Will Deacon <will.deacon@arm.com>

Bug: 28020023
Patchset: seccomp

(cherry picked from kernel/msm commit 6c552f2c72849c6f45904587d9643cfed57aee40)
Signed-off-by: Kees Cook <keescook@google.com>
Change-Id: If3ef7b7a1c08030702396842e814974486f71ea4
1 file changed