mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
entry: Use syscall number instead of rereading it
rseq_syscall_enter_work() is invoked before the syscall number can be modified. So there is no point in rereading it from pt_regs. Signed-off-by: Thomas Gleixner <tglx@kernel.org> Tested-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> Reviewed-by: Radu Rendec <radu@rendec.net> Reviewed-by: Jinjie Ruan <ruanjinjie@huawei.com> Reviewed-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com> Link: https://patch.msgid.link/20260707190254.181086755@kernel.org
This commit is contained in:
@@ -70,9 +70,10 @@ static inline void syscall_enter_audit(struct pt_regs *regs, long syscall)
|
||||
}
|
||||
}
|
||||
|
||||
static __always_inline long syscall_trace_enter(struct pt_regs *regs, unsigned long work)
|
||||
static __always_inline long syscall_trace_enter(struct pt_regs *regs, unsigned long work,
|
||||
long syscall)
|
||||
{
|
||||
long syscall, ret = 0;
|
||||
long ret = 0;
|
||||
|
||||
/*
|
||||
* Handle Syscall User Dispatch. This must comes first, since
|
||||
@@ -90,7 +91,7 @@ static __always_inline long syscall_trace_enter(struct pt_regs *regs, unsigned l
|
||||
* through hrtimer_interrupt().
|
||||
*/
|
||||
if (work & SYSCALL_WORK_SYSCALL_RSEQ_SLICE)
|
||||
rseq_syscall_enter_work(syscall_get_nr(current, regs));
|
||||
rseq_syscall_enter_work(syscall);
|
||||
|
||||
/* Handle ptrace */
|
||||
if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) {
|
||||
@@ -145,7 +146,7 @@ static __always_inline long syscall_enter_from_user_mode_work(struct pt_regs *re
|
||||
unsigned long work = READ_ONCE(current_thread_info()->syscall_work);
|
||||
|
||||
if (work & SYSCALL_WORK_ENTER)
|
||||
syscall = syscall_trace_enter(regs, work);
|
||||
syscall = syscall_trace_enter(regs, work, syscall);
|
||||
|
||||
return syscall;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user