[PATCH v4 0/9] ring-buffer: Fixes for subbuf resizing and persistent buffers
From: Vincent Donnefort <hidden>
Date: 2026-08-12 15:33:32
Also in:
lkml
This series addresses multiple issues discovered with the dynamic ring
buffer resizing.
Changelog:
v4:
- Add rb_subbuf_start() helper (Steven)
- kerneldoc additions
- Fix races in trace_pipe_raw readers
- Use rb_subbuf_capacity() in ring_buffer_subbuf_order_set()
- use rb_page_capacity() in ring_buffer_map_get_reader (Sashiko)
- Fix 32-bit overflow in ring_buffer_subbuf_order_set() (Sashiko)
- Hold cpu_buffer::lock when modifying cpu_buffer->free_page in
ring_buffer_subbuf_order_set (Sashiko)
v3 (https://lore.kernel.org/all/20260810125633.3344684-1-vdonnefort@google.com/ (local)):
- Drop first 3 patches (Rebased on 7.2-rc7)
- Add a patch to align "nr_pages" to unsigned int
- Add a patch to remove useless trace_buffer::cpus
- Add unsigned long cast for rb_subbuf_size()
- subbuf_order fix for rb_free_cpu_buffer() (Sashiko)
- Use __always_inline just like the other accessors for the hot-path.
v2 (https://lore.kernel.org/all/20260806211306.3704194-1-vdonnefort@google.com/ (local)):
- Prevent resizing of the persistent ring buffer
- Add missing bpage::order init
- Rework subbuf_size/subbuf_order (Sashiko)
- Remove ring_buffer_per_cpu::mapped
- Dynamically calculate trace_buffer::max_data_size
v1 (https://lore.kernel.org/all/20260805153225.2096152-1-vdonnefort@google.com/ (local))
Vincent Donnefort (9):
ring-buffer: Free cpu_buffer->free_page with subbuf_order
ring-buffer: Hold cpu_buffer::lock when resizing a subbuf
ring-buffer: Fix subbuf resize race with ring buffer readers
ring-buffer: Fix subbuf resize race in ring_buffer_alloc_read_page()
tracing: Fix subbuf resize races in trace_pipe_raw readers
ring-buffer: Dynamically calculate max_data_size
ring-buffer: Remove trace_buffer::cpus
ring-buffer: Remove ring_buffer_per_cpu::mapped
ring-buffer: Make nr_pages unsigned int
include/linux/ring_buffer.h | 4 +-
kernel/trace/ring_buffer.c | 354 +++++++++++++++++----------
kernel/trace/ring_buffer_benchmark.c | 2 +-
kernel/trace/trace.c | 92 +++----
kernel/trace/trace.h | 1 -
5 files changed, 269 insertions(+), 184 deletions(-)
base-commit: db2ddb87143519e20a95aa36c60b36107b736a58
--
2.55.0.691.gc56d675ccc-goog