mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Beau Belgrave <beaub@linux.microsoft.com>,
	rostedt@goodmis.org, mhiramat@kernel.org,
	dcook@linux.microsoft.com, alanau@linux.microsoft.com,
	brauner@kernel.org, akpm@linux-foundation.org
Cc: linux-trace-devel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 02/11] tracing/user_events: Track fork/exec/exit for mm lifetime
Date: Mon, 5 Dec 2022 16:17:38 -0500	[thread overview]
Message-ID: <fcb9026b-d65d-64eb-7080-40078ad75cf1@efficios.com> (raw)
In-Reply-To: <20221205210017.23440-3-beaub@linux.microsoft.com>

On 2022-12-05 16:00, Beau Belgrave wrote:
> 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.

Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>

> 
> Suggested-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com>
> ---
>   fs/exec.c                   |  2 ++
>   include/linux/sched.h       |  5 +++++
>   include/linux/user_events.h | 16 +++++++++++++++-
>   kernel/exit.c               |  2 ++
>   kernel/fork.c               |  2 ++
>   5 files changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/exec.c b/fs/exec.c
> index a0b1f0337a62..75ca6fbd195c 100644
> --- a/fs/exec.c
> +++ b/fs/exec.c
> @@ -64,6 +64,7 @@
>   #include <linux/io_uring.h>
>   #include <linux/syscall_user_dispatch.h>
>   #include <linux/coredump.h>
> +#include <linux/user_events.h>
>   
>   #include <linux/uaccess.h>
>   #include <asm/mmu_context.h>
> @@ -1842,6 +1843,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;
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index ffb6eb55cd13..61ed2f9deb26 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -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.
> diff --git a/include/linux/user_events.h b/include/linux/user_events.h
> index 036b360f3d97..3d747c45d2fa 100644
> --- a/include/linux/user_events.h
> +++ b/include/linux/user_events.h
> @@ -12,7 +12,21 @@
>   #include <uapi/linux/user_events.h>
>   
>   #ifdef CONFIG_USER_EVENTS
> -#else
> +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 */
> diff --git a/kernel/exit.c b/kernel/exit.c
> index 35e0a31a0315..0bfadc26d278 100644
> --- a/kernel/exit.c
> +++ b/kernel/exit.c
> @@ -67,6 +67,7 @@
>   #include <linux/io_uring.h>
>   #include <linux/kprobes.h>
>   #include <linux/rethook.h>
> +#include <linux/user_events.h>
>   
>   #include <linux/uaccess.h>
>   #include <asm/unistd.h>
> @@ -769,6 +770,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);
>   
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 08969f5aa38d..a4be76276ccb 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -97,6 +97,7 @@
>   #include <linux/scs.h>
>   #include <linux/io_uring.h>
>   #include <linux/bpf.h>
> +#include <linux/user_events.h>
>   
>   #include <asm/pgalloc.h>
>   #include <linux/uaccess.h>
> @@ -2487,6 +2488,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);
>   

-- 
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com


  reply	other threads:[~2022-12-05 21:17 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-05 21:00 [PATCH v5 00/11] tracing/user_events: Remote write ABI Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 01/11] tracing/user_events: Split header into uapi and kernel Beau Belgrave
2022-12-05 21:13   ` Mathieu Desnoyers
2022-12-05 22:30     ` Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 02/11] tracing/user_events: Track fork/exec/exit for mm lifetime Beau Belgrave
2022-12-05 21:17   ` Mathieu Desnoyers [this message]
2022-12-05 21:00 ` [PATCH v5 03/11] tracing/user_events: Use remote writes for event enablement Beau Belgrave
2022-12-05 21:28   ` Mathieu Desnoyers
2022-12-05 22:26     ` Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 04/11] tracing/user_events: Fixup enable faults asyncly Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 05/11] tracing/user_events: Add ioctl for disabling addresses Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 06/11] tracing/user_events: Update self-tests to write ABI Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 07/11] tracing/user_events: Add ABI self-test Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 08/11] tracing/user_events: Use write ABI in example Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 09/11] tracing/user_events: Update documentation for ABI Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 10/11] tracing/user_events: Charge event allocs to cgroups Beau Belgrave
2022-12-05 21:00 ` [PATCH v5 11/11] tracing/user_events: Limit global user_event count Beau Belgrave
2022-12-05 21:33   ` Mathieu Desnoyers
2022-12-05 22:28     ` Beau Belgrave

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fcb9026b-d65d-64eb-7080-40078ad75cf1@efficios.com \
    --to=mathieu.desnoyers@efficios.com \
    --cc=akpm@linux-foundation.org \
    --cc=alanau@linux.microsoft.com \
    --cc=beaub@linux.microsoft.com \
    --cc=brauner@kernel.org \
    --cc=dcook@linux.microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-devel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®