From: Beau Belgrave <beaub@linux.microsoft.com>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: rostedt@goodmis.org, linux-trace-devel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v8 11/12] user_events: Validate user payloads for size and null termination
Date: Thu, 6 Jan 2022 17:01:55 -0800 [thread overview]
Message-ID: <20220107010155.GA7306@kbox> (raw)
In-Reply-To: <20220107083252.0da5237af9c5d041a3850dc6@kernel.org>
On Fri, Jan 07, 2022 at 08:32:52AM +0900, Masami Hiramatsu wrote:
> Hi Beau,
>
> On Mon, 3 Jan 2022 10:53:08 -0800
> Beau Belgrave <beaub@linux.microsoft.com> wrote:
>
> [...]
> > > > typedef void (*user_event_func_t) (struct user_event *user, struct iov_iter *i,
> > > > - void *tpdata);
> > > > + void *tpdata, bool *faulted);
> > >
> > > Why don't you just return "int" value? ;-)
> > >
> >
> > There can be more than one callback attached per-probe, and in all cases
> > where a return value is needed is for a faulted (or would have faulted)
> > case. This allows less branches when data is being traced/logged as the
> > return value does not need to be checked (nor should it short circuit
> > other probes that are attached).
>
> Would you mean overwriting the 'faulted' ? If so, you can do something like
>
> faulted = 0;
> for_each_user_event_func(user_event_func) {
> faulted |= user_event_func();
> }
> if (faulted)
> ...
>
Yeah, could OR it in, I don't see a big difference though to be honest
:)
> But I think if one user_event_func() fails to access the user data,
> other funcs also fail. In this case, it is faster to skip others than
> repeating faults.
eBPF will not fault when perf/ftrace could, at the very least we want to
ensure that callbacks get a chance to see data even if it faulted
elsewhere. This ensures that we are not blind to the fact it is happening
at least when eBPF is being used. We cannot guarantee probe/callback order.
This has been a problem in the past for us, we've seen data disappear later
to find out it was possibly due to a page fault occurring.
In later versions I would like to add internal tracepoints for these
conditions (and some others) so we can further track when they occur.
Thanks,
-Beau
next prev parent reply other threads:[~2022-01-07 1:02 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-16 17:34 [PATCH v8 00/12] user_events: Enable user processes to create and write to trace events Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 01/12] user_events: Add minimal support for trace_event into ftrace Beau Belgrave
2021-12-21 15:16 ` Masami Hiramatsu
2022-01-03 18:22 ` Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 02/12] user_events: Add print_fmt generation support for basic types Beau Belgrave
2021-12-22 0:30 ` Masami Hiramatsu
2022-01-03 18:56 ` Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 03/12] user_events: Handle matching arguments from dyn_events Beau Belgrave
2021-12-22 6:19 ` Masami Hiramatsu
2021-12-16 17:35 ` [PATCH v8 04/12] user_events: Add basic perf and eBPF support Beau Belgrave
2021-12-22 7:55 ` Masami Hiramatsu
2021-12-16 17:35 ` [PATCH v8 05/12] user_events: Add self-test for ftrace integration Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 06/12] user_events: Add self-test for dynamic_events integration Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 07/12] user_events: Add self-test for perf_event integration Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 08/12] user_events: Optimize writing events by only copying data once Beau Belgrave
2021-12-22 15:11 ` Masami Hiramatsu
2022-01-03 18:58 ` Beau Belgrave
2022-01-06 22:17 ` Steven Rostedt
2022-01-06 23:05 ` Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 09/12] user_events: Add documentation file Beau Belgrave
2021-12-22 14:18 ` Masami Hiramatsu
2022-01-03 23:01 ` Beau Belgrave
2022-01-06 21:14 ` Steven Rostedt
2021-12-16 17:35 ` [PATCH v8 10/12] user_events: Add sample code for typical usage Beau Belgrave
2021-12-22 23:18 ` Masami Hiramatsu
2022-01-06 22:09 ` Steven Rostedt
2022-01-06 23:06 ` Beau Belgrave
2021-12-16 17:35 ` [PATCH v8 11/12] user_events: Validate user payloads for size and null termination Beau Belgrave
2021-12-23 0:08 ` Masami Hiramatsu
2022-01-03 18:53 ` Beau Belgrave
2022-01-06 23:32 ` Masami Hiramatsu
2022-01-07 1:01 ` Beau Belgrave [this message]
2021-12-16 17:35 ` [PATCH v8 12/12] user_events: Add self-test for validator boundaries Beau Belgrave
2022-04-18 20:43 ` [PATCH v8 00/12] user_events: Enable user processes to create and write to trace events Hagen Paul Pfeifer
2022-04-19 0:25 ` 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=20220107010155.GA7306@kbox \
--to=beaub@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;
as well as URLs for NNTP newsgroup(s).