mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
tracing/user_events: Track fork/exec/exit for mm lifetime
During tracefs discussions it was decided instead of requiring a mapping within a user-process to track the lifetime of memory descriptors we should hook the appropriate calls. Do this by adding the minimal stubs required for task fork, exec, and exit. Currently this is just a NOP. Future patches will implement these calls fully. Link: https://lkml.kernel.org/r/20230328235219.203-3-beaub@linux.microsoft.com Suggested-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
e5a26a4048
commit
fd593511cd
5 changed files with 29 additions and 0 deletions
|
@ -65,6 +65,7 @@
|
|||
#include <linux/syscall_user_dispatch.h>
|
||||
#include <linux/coredump.h>
|
||||
#include <linux/time_namespace.h>
|
||||
#include <linux/user_events.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/mmu_context.h>
|
||||
|
@ -1859,6 +1860,7 @@ static int bprm_execve(struct linux_binprm *bprm,
|
|||
current->fs->in_exec = 0;
|
||||
current->in_execve = 0;
|
||||
rseq_execve(current);
|
||||
user_events_execve(current);
|
||||
acct_update_integrals(current);
|
||||
task_numa_free(current, false);
|
||||
return retval;
|
||||
|
|
|
@ -69,6 +69,7 @@ struct sighand_struct;
|
|||
struct signal_struct;
|
||||
struct task_delay_info;
|
||||
struct task_group;
|
||||
struct user_event_mm;
|
||||
|
||||
/*
|
||||
* Task state bitmask. NOTE! These bits are also
|
||||
|
@ -1528,6 +1529,10 @@ struct task_struct {
|
|||
union rv_task_monitor rv[RV_PER_TASK_MONITORS];
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USER_EVENTS
|
||||
struct user_event_mm *user_event_mm;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* New fields for task_struct should be added above here, so that
|
||||
* they are included in the randomized portion of task_struct.
|
||||
|
|
|
@ -11,4 +11,22 @@
|
|||
|
||||
#include <uapi/linux/user_events.h>
|
||||
|
||||
#ifdef CONFIG_USER_EVENTS
|
||||
struct user_event_mm {
|
||||
};
|
||||
#endif
|
||||
|
||||
static inline void user_events_fork(struct task_struct *t,
|
||||
unsigned long clone_flags)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void user_events_execve(struct task_struct *t)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void user_events_exit(struct task_struct *t)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* _LINUX_USER_EVENTS_H */
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
#include <linux/kprobes.h>
|
||||
#include <linux/rethook.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/user_events.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/unistd.h>
|
||||
|
@ -818,6 +819,7 @@ void __noreturn do_exit(long code)
|
|||
|
||||
coredump_task_exit(tsk);
|
||||
ptrace_event(PTRACE_EVENT_EXIT, code);
|
||||
user_events_exit(tsk);
|
||||
|
||||
validate_creds_for_do_exit(tsk);
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@
|
|||
#include <linux/io_uring.h>
|
||||
#include <linux/bpf.h>
|
||||
#include <linux/stackprotector.h>
|
||||
#include <linux/user_events.h>
|
||||
|
||||
#include <asm/pgalloc.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
@ -2505,6 +2506,7 @@ static __latent_entropy struct task_struct *copy_process(
|
|||
|
||||
trace_task_newtask(p, clone_flags);
|
||||
uprobe_copy_process(p, clone_flags);
|
||||
user_events_fork(p, clone_flags);
|
||||
|
||||
copy_oom_score_adj(clone_flags, p);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue