Commit 0cfcb2b9 authored by Eric W. Biederman's avatar Eric W. Biederman

ptrace: Remove arch_syscall_{enter,exit}_tracehook

These functions are alwasy one-to-one wrappers around
ptrace_report_syscall_entry and ptrace_report_syscall_exit.
So directly call the functions they are wrapping instead.
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lkml.kernel.org/r/20220309162454.123006-4-ebiederm@xmission.comSigned-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 153474ba
...@@ -79,26 +79,6 @@ static __always_inline void arch_check_user_regs(struct pt_regs *regs); ...@@ -79,26 +79,6 @@ static __always_inline void arch_check_user_regs(struct pt_regs *regs);
static __always_inline void arch_check_user_regs(struct pt_regs *regs) {} static __always_inline void arch_check_user_regs(struct pt_regs *regs) {}
#endif #endif
/**
* arch_syscall_enter_tracehook - Wrapper around tracehook_report_syscall_entry()
* @regs: Pointer to currents pt_regs
*
* Returns: 0 on success or an error code to skip the syscall.
*
* Defaults to tracehook_report_syscall_entry(). Can be replaced by
* architecture specific code.
*
* Invoked from syscall_enter_from_user_mode()
*/
static inline __must_check int arch_syscall_enter_tracehook(struct pt_regs *regs);
#ifndef arch_syscall_enter_tracehook
static inline __must_check int arch_syscall_enter_tracehook(struct pt_regs *regs)
{
return ptrace_report_syscall_entry(regs);
}
#endif
/** /**
* enter_from_user_mode - Establish state when coming from user mode * enter_from_user_mode - Establish state when coming from user mode
* *
...@@ -157,7 +137,7 @@ void syscall_enter_from_user_mode_prepare(struct pt_regs *regs); ...@@ -157,7 +137,7 @@ void syscall_enter_from_user_mode_prepare(struct pt_regs *regs);
* It handles the following work items: * It handles the following work items:
* *
* 1) syscall_work flag dependent invocations of * 1) syscall_work flag dependent invocations of
* arch_syscall_enter_tracehook(), __secure_computing(), trace_sys_enter() * ptrace_report_syscall_entry(), __secure_computing(), trace_sys_enter()
* 2) Invocation of audit_syscall_entry() * 2) Invocation of audit_syscall_entry()
*/ */
long syscall_enter_from_user_mode_work(struct pt_regs *regs, long syscall); long syscall_enter_from_user_mode_work(struct pt_regs *regs, long syscall);
...@@ -279,25 +259,6 @@ static __always_inline void arch_exit_to_user_mode(void) { } ...@@ -279,25 +259,6 @@ static __always_inline void arch_exit_to_user_mode(void) { }
*/ */
void arch_do_signal_or_restart(struct pt_regs *regs, bool has_signal); void arch_do_signal_or_restart(struct pt_regs *regs, bool has_signal);
/**
* arch_syscall_exit_tracehook - Wrapper around tracehook_report_syscall_exit()
* @regs: Pointer to currents pt_regs
* @step: Indicator for single step
*
* Defaults to tracehook_report_syscall_exit(). Can be replaced by
* architecture specific code.
*
* Invoked from syscall_exit_to_user_mode()
*/
static inline void arch_syscall_exit_tracehook(struct pt_regs *regs, bool step);
#ifndef arch_syscall_exit_tracehook
static inline void arch_syscall_exit_tracehook(struct pt_regs *regs, bool step)
{
ptrace_report_syscall_exit(regs, step);
}
#endif
/** /**
* exit_to_user_mode - Fixup state when exiting to user mode * exit_to_user_mode - Fixup state when exiting to user mode
* *
...@@ -347,7 +308,7 @@ void syscall_exit_to_user_mode_work(struct pt_regs *regs); ...@@ -347,7 +308,7 @@ void syscall_exit_to_user_mode_work(struct pt_regs *regs);
* - rseq syscall exit * - rseq syscall exit
* - audit * - audit
* - syscall tracing * - syscall tracing
* - tracehook (single stepping) * - ptrace (single stepping)
* *
* 2) Preparatory work * 2) Preparatory work
* - Exit to user mode loop (common TIF handling). Invokes * - Exit to user mode loop (common TIF handling). Invokes
......
...@@ -59,7 +59,7 @@ static long syscall_trace_enter(struct pt_regs *regs, long syscall, ...@@ -59,7 +59,7 @@ static long syscall_trace_enter(struct pt_regs *regs, long syscall,
/* Handle ptrace */ /* Handle ptrace */
if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) { if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) {
ret = arch_syscall_enter_tracehook(regs); ret = ptrace_report_syscall_entry(regs);
if (ret || (work & SYSCALL_WORK_SYSCALL_EMU)) if (ret || (work & SYSCALL_WORK_SYSCALL_EMU))
return -1L; return -1L;
} }
...@@ -253,7 +253,7 @@ static void syscall_exit_work(struct pt_regs *regs, unsigned long work) ...@@ -253,7 +253,7 @@ static void syscall_exit_work(struct pt_regs *regs, unsigned long work)
step = report_single_step(work); step = report_single_step(work);
if (step || work & SYSCALL_WORK_SYSCALL_TRACE) if (step || work & SYSCALL_WORK_SYSCALL_TRACE)
arch_syscall_exit_tracehook(regs, step); ptrace_report_syscall_exit(regs, step);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment