mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
powerpc: Remove unused functions
After enabling GENERIC_ENTRY some functions are left unused. Cleanup all those functions which includes: - do_syscall_trace_enter - do_syscall_trace_leave - do_notify_resume - do_seccomp Signed-off-by: Mukesh Kumar Chaurasiya <mkchauras@linux.ibm.com> Tested-by: Samir M <samir@linux.ibm.com> Tested-by: David Gow <davidgow@google.com> Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com> Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260427122742.210074-9-mkchauras@gmail.com
This commit is contained in:
committed by
Madhavan Srinivasan
parent
bee25f97ad
commit
6ed60999d3
@@ -177,9 +177,6 @@ extern unsigned long profile_pc(struct pt_regs *regs);
|
||||
#define profile_pc(regs) instruction_pointer(regs)
|
||||
#endif
|
||||
|
||||
long do_syscall_trace_enter(struct pt_regs *regs);
|
||||
void do_syscall_trace_leave(struct pt_regs *regs);
|
||||
|
||||
static inline void set_return_regs_changed(void)
|
||||
{
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include <uapi/asm/ptrace.h>
|
||||
|
||||
struct pt_regs;
|
||||
void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags);
|
||||
|
||||
unsigned long get_min_sigframe_size_32(void);
|
||||
unsigned long get_min_sigframe_size_64(void);
|
||||
|
||||
@@ -192,144 +192,6 @@ long arch_ptrace(struct task_struct *child, long request,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SECCOMP
|
||||
static int do_seccomp(struct pt_regs *regs)
|
||||
{
|
||||
if (!test_thread_flag(TIF_SECCOMP))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The ABI we present to seccomp tracers is that r3 contains
|
||||
* the syscall return value and orig_gpr3 contains the first
|
||||
* syscall parameter. This is different to the ptrace ABI where
|
||||
* both r3 and orig_gpr3 contain the first syscall parameter.
|
||||
*/
|
||||
regs->gpr[3] = -ENOSYS;
|
||||
|
||||
/*
|
||||
* We use the __ version here because we have already checked
|
||||
* TIF_SECCOMP. If this fails, there is nothing left to do, we
|
||||
* have already loaded -ENOSYS into r3, or seccomp has put
|
||||
* something else in r3 (via SECCOMP_RET_ERRNO/TRACE).
|
||||
*/
|
||||
if (__secure_computing())
|
||||
return -1;
|
||||
|
||||
/*
|
||||
* The syscall was allowed by seccomp, restore the register
|
||||
* state to what audit expects.
|
||||
* Note that we use orig_gpr3, which means a seccomp tracer can
|
||||
* modify the first syscall parameter (in orig_gpr3) and also
|
||||
* allow the syscall to proceed.
|
||||
*/
|
||||
regs->gpr[3] = regs->orig_gpr3;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static inline int do_seccomp(struct pt_regs *regs) { return 0; }
|
||||
#endif /* CONFIG_SECCOMP */
|
||||
|
||||
/**
|
||||
* do_syscall_trace_enter() - Do syscall tracing on kernel entry.
|
||||
* @regs: the pt_regs of the task to trace (current)
|
||||
*
|
||||
* Performs various types of tracing on syscall entry. This includes seccomp,
|
||||
* ptrace, syscall tracepoints and audit.
|
||||
*
|
||||
* The pt_regs are potentially visible to userspace via ptrace, so their
|
||||
* contents is ABI.
|
||||
*
|
||||
* One or more of the tracers may modify the contents of pt_regs, in particular
|
||||
* to modify arguments or even the syscall number itself.
|
||||
*
|
||||
* It's also possible that a tracer can choose to reject the system call. In
|
||||
* that case this function will return an illegal syscall number, and will put
|
||||
* an appropriate return value in regs->r3.
|
||||
*
|
||||
* Return: the (possibly changed) syscall number.
|
||||
*/
|
||||
long do_syscall_trace_enter(struct pt_regs *regs)
|
||||
{
|
||||
u32 flags;
|
||||
|
||||
flags = read_thread_flags() & (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE);
|
||||
|
||||
if (flags) {
|
||||
int rc = ptrace_report_syscall_entry(regs);
|
||||
|
||||
if (unlikely(flags & _TIF_SYSCALL_EMU)) {
|
||||
/*
|
||||
* A nonzero return code from
|
||||
* ptrace_report_syscall_entry() tells us to prevent
|
||||
* the syscall execution, but we are not going to
|
||||
* execute it anyway.
|
||||
*
|
||||
* Returning -1 will skip the syscall execution. We want
|
||||
* to avoid clobbering any registers, so we don't goto
|
||||
* the skip label below.
|
||||
*/
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (rc) {
|
||||
/*
|
||||
* The tracer decided to abort the syscall. Note that
|
||||
* the tracer may also just change regs->gpr[0] to an
|
||||
* invalid syscall number, that is handled below on the
|
||||
* exit path.
|
||||
*/
|
||||
goto skip;
|
||||
}
|
||||
}
|
||||
|
||||
/* Run seccomp after ptrace; allow it to set gpr[3]. */
|
||||
if (do_seccomp(regs))
|
||||
return -1;
|
||||
|
||||
/* Avoid trace and audit when syscall is invalid. */
|
||||
if (regs->gpr[0] >= NR_syscalls)
|
||||
goto skip;
|
||||
|
||||
if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
|
||||
trace_sys_enter(regs, regs->gpr[0]);
|
||||
|
||||
if (!is_32bit_task())
|
||||
audit_syscall_entry(regs->gpr[0], regs->gpr[3], regs->gpr[4],
|
||||
regs->gpr[5], regs->gpr[6]);
|
||||
else
|
||||
audit_syscall_entry(regs->gpr[0],
|
||||
regs->gpr[3] & 0xffffffff,
|
||||
regs->gpr[4] & 0xffffffff,
|
||||
regs->gpr[5] & 0xffffffff,
|
||||
regs->gpr[6] & 0xffffffff);
|
||||
|
||||
/* Return the possibly modified but valid syscall number */
|
||||
return regs->gpr[0];
|
||||
|
||||
skip:
|
||||
/*
|
||||
* If we are aborting explicitly, or if the syscall number is
|
||||
* now invalid, set the return value to -ENOSYS.
|
||||
*/
|
||||
regs->gpr[3] = -ENOSYS;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void do_syscall_trace_leave(struct pt_regs *regs)
|
||||
{
|
||||
int step;
|
||||
|
||||
audit_syscall_exit(regs);
|
||||
|
||||
if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
|
||||
trace_sys_exit(regs, regs->result);
|
||||
|
||||
step = test_thread_flag(TIF_SINGLESTEP);
|
||||
if (step || test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
ptrace_report_syscall_exit(regs, step);
|
||||
}
|
||||
|
||||
void __init pt_regs_check(void);
|
||||
|
||||
/*
|
||||
|
||||
@@ -293,23 +293,6 @@ static void do_signal(struct task_struct *tsk)
|
||||
signal_setup_done(ret, &ksig, test_thread_flag(TIF_SINGLESTEP));
|
||||
}
|
||||
|
||||
void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags)
|
||||
{
|
||||
if (thread_info_flags & _TIF_UPROBE)
|
||||
uprobe_notify_resume(regs);
|
||||
|
||||
if (thread_info_flags & _TIF_PATCH_PENDING)
|
||||
klp_update_patch_state(current);
|
||||
|
||||
if (thread_info_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL)) {
|
||||
BUG_ON(regs != current->thread.regs);
|
||||
do_signal(current);
|
||||
}
|
||||
|
||||
if (thread_info_flags & _TIF_NOTIFY_RESUME)
|
||||
resume_user_mode_work(regs);
|
||||
}
|
||||
|
||||
static unsigned long get_tm_stackpointer(struct task_struct *tsk)
|
||||
{
|
||||
/* When in an active transaction that takes a signal, we need to be
|
||||
|
||||
Reference in New Issue
Block a user