These patches fix some system call tracing issues around seccomp and ptrace on MIPS.
Patch 1 fixes an issue introduced in v4.13-rc1, where o32 indirect syscall arguments aren't shifted when filling out seccomp_data struct. Arguably the samples/bpf/tracex5 case that was being fixed in -rc1 is flawed, or else other arches are broken too. thoughts welcome on that, but either way this fix should be okay. It'd be good to get this fix in particular into v4.13. Patches 2 and 3 fix changing of system calls by ptrace and SECCOMP_RET_TRACE so that seccomp & syscall trace don't use the stale system call number, which appears to have been conceptually broken since v3.19 when thread_info::syscall was introduced, but also prevented the change in v4.8 to re-run the seccomp filter against a changed syscall from being effective on MIPS. First (patch 2) syscall_trace_enter() is fixed to re-read the syscall number from thread_info:syscall, then (patch 3) ptrace is fixed to update thread_info::syscall when the relevant registers are altered. Finally patch 4 fixes an API gap for MIPS which prevents a SECCOMP_RET_TRACE tracer from being able to cancel a system call, since you can't set both the system call number (v0) to -1 and the return value (v0) to the chosen error code. A PTRACE_SET_SYSCALL is added which allows thread_info::syscall to be set to -1 after the return value has already been set in the v0 register to some other value. Cc: Ralf Baechle <r...@linux-mips.org> Cc: David Daney <david.da...@cavium.com> Cc: Kees Cook <keesc...@chromium.org> Cc: Andy Lutomirski <l...@amacapital.net> Cc: Will Drewry <w...@chromium.org> Cc: Oleg Nesterov <o...@redhat.com> Cc: Alexei Starovoitov <a...@kernel.org> Cc: Daniel Borkmann <dan...@iogearbox.net> Cc: Lars Persson <lars.pers...@axis.com> Cc: netdev@vger.kernel.org Cc: linux-ker...@vger.kernel.org Cc: linux-m...@linux-mips.org James Hogan (4): MIPS/seccomp: Fix indirect syscall args MIPS/ptrace: Pick up ptrace/seccomp changed syscalls MIPS/ptrace: Update syscall nr on register changes MIPS/ptrace: Add PTRACE_SET_SYSCALL operation arch/mips/include/asm/syscall.h | 29 ++++++++++++++++++++---- arch/mips/include/uapi/asm/ptrace.h | 1 + arch/mips/kernel/ptrace.c | 45 +++++++++++++++++++++++++++++-------- arch/mips/kernel/ptrace32.c | 18 +++++++++++++++ 4 files changed, 80 insertions(+), 13 deletions(-) -- 2.13.2