From: Steven Rostedt <rostedt@goodmis.org>
To: Vincent Donnefort <vdonnefort@google.com>
Cc: mhiramat@kernel.org, linux-trace-kernel@vger.kernel.org,
mathieu.desnoyers@efficios.com, kernel-team@android.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v10 2/4] tracing: Fix subbuf resize races with trace_pipe_raw readers
Date: Fri, 4 Sep 2026 14:35:27 -0400 [thread overview]
Message-ID: <20260904143527.40e73d36@gandalf.local.home> (raw)
In-Reply-To: <20260904164450.1345852-3-vdonnefort@google.com>
On Fri, 4 Sep 2026 17:44:48 +0100
Vincent Donnefort <vdonnefort@google.com> wrote:
> @@ -7306,25 +7281,37 @@ ssize_t tracing_buffers_splice_read(struct file *file, loff_t *ppos,
>
> refcount_set(&ref->refcount, 1);
> ref->buffer = iter->array_buffer->buffer;
> - ref->page = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file);
> - if (IS_ERR(ref->page)) {
> - ret = PTR_ERR(ref->page);
> - ref->page = NULL;
> +
> + ret = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file, &ref->rpage);
> + if (ret) {
> kfree(ref);
> break;
> }
> ref->cpu = iter->cpu_file;
>
> - r = ring_buffer_read_page(ref->buffer, ref->page,
> - len, iter->cpu_file, 1);
> + page_size = ring_buffer_read_page_size(ref->rpage);
> +
> + r = -EINVAL;
> + if (IS_ALIGNED(*ppos, page_size) && len >= page_size) {
> + r = ring_buffer_read_page(ref->buffer, ref->rpage, len, iter->cpu_file, 1);
> + } else if (!i) {
> + /*
> + * We failed to read because the length is too small
> + * or unaligned. If this is the first iteration, it's
> + * an invalid userspace input. Otherwise, this is due
> + * to a subbuf order change. Do not report an error
> + * and just finish the read.
This isn't quite true. It can be an invalid length and not the first
iteration. If you ask for a length that isn't subbuffer aligned but greater
than one subbuffer in size it will work the first iteration but fail at the
end where it couldn't get a full page.
That is valid but would also trigger this path.
This is the only issue I have with this patch set. I'll just take it as is
now. We can fix the comment later. I want to start testing it and get it to
Linus before the next RC release is out. If it fails the tests, then we can
fix the comment as it will not make the next release.
-- Steve
> + */
> + ret = -EINVAL;
> + }
> +
> if (r < 0) {
> - ring_buffer_free_read_page(ref->buffer, ref->cpu,
> - ref->page);
> + ring_buffer_free_read_page(ref->buffer, ref->cpu, ref->rpage);
> kfree(ref);
> break;
> }
>
> - page = virt_to_page(ring_buffer_read_page_data(ref->page));
> + page = virt_to_page(ring_buffer_read_page_data(ref->rpage));
>
> spd.pages[i] = page;
> spd.partial[i].len = page_size;
next prev parent reply other threads:[~2026-09-04 18:34 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 16:44 [PATCH v10 0/4] ring-buffer: Fixes for subbuf resizing and persistent buffers Vincent Donnefort
2026-09-04 16:44 ` [PATCH v10 1/4] ring-buffer: Allow splice reads on static buffers Vincent Donnefort
2026-09-04 17:01 ` sashiko-bot
2026-09-04 17:12 ` Steven Rostedt
2026-09-04 16:44 ` [PATCH v10 2/4] tracing: Fix subbuf resize races with trace_pipe_raw readers Vincent Donnefort
2026-09-04 18:35 ` Steven Rostedt [this message]
2026-09-04 18:41 ` Steven Rostedt
2026-09-04 16:44 ` [PATCH v10 3/4] ring-buffer: Cap static ring buffer nr_pages Vincent Donnefort
2026-09-04 17:04 ` sashiko-bot
2026-09-04 16:44 ` [PATCH v10 4/4] ring-buffer: Prevent truncation of nr_pages / nr_subbufs Vincent Donnefort
2026-09-04 17:00 ` sashiko-bot
2026-09-04 18:11 ` [PATCH v10 0/4] ring-buffer: Fixes for subbuf resizing and persistent buffers Steven Rostedt
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=20260904143527.40e73d36@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=kernel-team@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=vdonnefort@google.com \
/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