um/ptrace: Implement HAVE_SYSCALL_TRACEPOINTS
Implement syscall tracepoints through the generic tracing infrastructure. Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Reviewed-by: Nam Cao <namcao@linutronix.de> Link: https://patch.msgid.link/20250703-uml-have_syscall_tracepoints-v1-2-23c1d3808578@linutronix.de Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
32a15664ef
commit
2a713f04ed
@@ -35,6 +35,7 @@ config UML
|
||||
select HAVE_RUST
|
||||
select ARCH_HAS_UBSAN
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select THREAD_INFO_IN_TASK
|
||||
|
||||
config MMU
|
||||
|
||||
@@ -43,6 +43,8 @@ struct thread_info {
|
||||
#define TIF_NOTIFY_RESUME 8
|
||||
#define TIF_SECCOMP 9 /* secure computing */
|
||||
#define TIF_SINGLESTEP 10 /* single stepping userspace */
|
||||
#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */
|
||||
|
||||
|
||||
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
|
||||
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/ptrace-abi.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/syscalls.h>
|
||||
|
||||
void user_enable_single_step(struct task_struct *child)
|
||||
{
|
||||
set_tsk_thread_flag(child, TIF_SINGLESTEP);
|
||||
@@ -126,6 +129,9 @@ int syscall_trace_enter(struct pt_regs *regs)
|
||||
UPT_SYSCALL_ARG3(®s->regs),
|
||||
UPT_SYSCALL_ARG4(®s->regs));
|
||||
|
||||
if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
|
||||
trace_sys_enter(regs, UPT_SYSCALL_NR(®s->regs));
|
||||
|
||||
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
return 0;
|
||||
|
||||
@@ -142,6 +148,9 @@ void syscall_trace_leave(struct pt_regs *regs)
|
||||
if (test_thread_flag(TIF_SINGLESTEP))
|
||||
send_sigtrap(®s->regs, 0);
|
||||
|
||||
if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
|
||||
trace_sys_exit(regs, PT_REGS_SYSCALL_RET(regs));
|
||||
|
||||
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user