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 v7 09/13] user_events: Optimize writing events by only copying data once
Date: Fri, 10 Dec 2021 10:36:51 -0800 [thread overview]
Message-ID: <20211210183651.GA2242@kbox> (raw)
In-Reply-To: <20211210235110.f674dd81e27bdedb231826a2@kernel.org>
On Fri, Dec 10, 2021 at 11:51:10PM +0900, Masami Hiramatsu wrote:
> Hi Beau,
>
> On Thu, 9 Dec 2021 14:32:06 -0800
> Beau Belgrave <beaub@linux.microsoft.com> wrote:
>
> > Pass iterator through to probes to allow copying data directly to the
> > probe buffers instead of taking multiple copies. Enables eBPF user and
> > raw iterator types out to programs for no-copy scenarios.
> >
> > Signed-off-by: Beau Belgrave <beaub@linux.microsoft.com>
> > ---
[..]
> > @@ -1009,32 +1059,28 @@ static ssize_t user_events_write_core(struct file *file, struct iov_iter *i)
> > if (likely(atomic_read(&tp->key.enabled) > 0)) {
> > struct tracepoint_func *probe_func_ptr;
> > user_event_func_t probe_func;
> > + struct iov_iter copy;
> > void *tpdata;
> > - void *kdata;
> > - u32 datalen;
> >
> > - kdata = kmalloc(i->count, GFP_KERNEL);
> > -
> > - if (unlikely(!kdata))
> > - return -ENOMEM;
> > -
> > - datalen = copy_from_iter(kdata, i->count, i);
> > + if (unlikely(iov_iter_fault_in_readable(i, i->count)))
> > + return -EFAULT;
> >
> > rcu_read_lock_sched();
> > + pagefault_disable();
>
> Since the pagefault_disable() may have unexpected side effect,
> I think it should be used really limited area, e.g. around
> actual memory access function.
> Can we move this around the copy_nofault()?
>
Sure thing.
> Thank you,
> >
> > probe_func_ptr = rcu_dereference_sched(tp->funcs);
> >
> > if (probe_func_ptr) {
> > do {
> > + copy = *i;
> > probe_func = probe_func_ptr->func;
> > tpdata = probe_func_ptr->data;
> > - probe_func(user, kdata, datalen, tpdata);
> > + probe_func(user, ©, tpdata);
> > } while ((++probe_func_ptr)->func);
> > }
> >
> > + pagefault_enable();
> > rcu_read_unlock_sched();
> > -
> > - kfree(kdata);
> > }
> >
> > return ret;
> > --
> > 2.17.1
> >
>
>
> --
> Masami Hiramatsu <mhiramat@kernel.org>
Thanks,
-Beau
next prev parent reply other threads:[~2021-12-10 18:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-09 22:31 [PATCH v7 00/13] user_events: Enable user processes to create and write to trace events Beau Belgrave
2021-12-09 22:31 ` [PATCH v7 01/13] user_events: Add UABI header for user access to user_events Beau Belgrave
2021-12-10 13:30 ` Masami Hiramatsu
2021-12-10 17:29 ` Beau Belgrave
2021-12-09 22:31 ` [PATCH v7 02/13] user_events: Add minimal support for trace_event into ftrace Beau Belgrave
2021-12-10 10:43 ` Masami Hiramatsu
2021-12-10 17:43 ` Steven Rostedt
2021-12-13 0:09 ` Masami Hiramatsu
2021-12-13 16:48 ` Steven Rostedt
2021-12-10 18:03 ` Beau Belgrave
2021-12-13 4:24 ` Masami Hiramatsu
2021-12-13 17:58 ` Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 03/13] user_events: Add print_fmt generation support for basic types Beau Belgrave
2021-12-10 2:50 ` Masami Hiramatsu
2021-12-09 22:32 ` [PATCH v7 04/13] user_events: Handle matching arguments from dyn_events Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 05/13] user_events: Add basic perf and eBPF support Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 06/13] user_events: Add self-test for ftrace integration Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 07/13] user_events: Add self-test for dynamic_events integration Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 08/13] user_events: Add self-test for perf_event integration Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 09/13] user_events: Optimize writing events by only copying data once Beau Belgrave
2021-12-10 14:51 ` Masami Hiramatsu
2021-12-10 18:36 ` Beau Belgrave [this message]
2021-12-09 22:32 ` [PATCH v7 10/13] user_events: Add documentation file Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 11/13] user_events: Add sample code for typical usage Beau Belgrave
2021-12-09 22:32 ` [PATCH v7 12/13] user_events: Validate user payloads for size and null termination Beau Belgrave
2021-12-10 14:46 ` Masami Hiramatsu
2021-12-09 22:32 ` [PATCH v7 13/13] user_events: Use __get_rel_str for relative string fields Beau Belgrave
2021-12-10 1:23 ` Masami Hiramatsu
2021-12-10 18:45 ` Beau Belgrave
2021-12-12 15:12 ` Masami Hiramatsu
2021-12-13 18:47 ` Beau Belgrave
2021-12-14 6:30 ` Masami Hiramatsu
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=20211210183651.GA2242@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.