[PATCH 07/13] mips: pass all six syscall args to audit_syscall_entry()
Ricardo Robaina <[email protected]>
| Newsgroups | org.kernel.vger.sparclinux,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-um,org.kernel.vger.audit,org.kernel.vger.bpf,org.kernel.vger.linux-alpha,org.kernel.vger.linux-csky,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mips,org.kernel.vger.linux-openrisc,org.kernel.vger.linux-parisc,org.kernel.vger.linux-sh |
|---|---|
| Message-ID | <212ca026f8a19f564f3b37b03d1d3e09e0de3e47.1786626275.git.rrobaina@redhat.com> |
Use syscall_get_arguments() to retrieve all six arguments portably. On 32-bit MIPS (O32 ABI), arguments 5 and 6 live on the user stack rather than in registers, so direct register access would be wrong. Signed-off-by: Ricardo Robaina <[email protected]> --- arch/mips/kernel/ptrace.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index 3f4c94c88124..9e6f9accdb41 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c @@ -1334,9 +1334,14 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs) if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) trace_sys_enter(regs, regs->regs[2]); - audit_syscall_entry(current_thread_info()->syscall, - regs->regs[4], regs->regs[5], - regs->regs[6], regs->regs[7]); + { + unsigned long args[6]; + + syscall_get_arguments(current, regs, args); + audit_syscall_entry(current_thread_info()->syscall, + args[0], args[1], args[2], args[3], + args[4], args[5]); + } /* * Negative syscall numbers are mistaken for rejected syscalls, but -- 2.55.0