Thread (6 messages) 6 messages, 2 authors, 1d ago

Re: [PATCH] ring-buffer: serialize read-page order with subbuffer resize

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2026-06-30 21:16:07
Also in: lkml

On Tue, 30 Jun 2026 13:45:05 -0700
Yousef Alhouseen [off-list ref] wrote:
One issue turned up while checking the suggested locking:
ring_buffer_subbuf_order_set() writes buffer->subbuf_order before
taking reader_lock and never takes cpu_buffer->lock. An allocator can
therefore take cpu_buffer->lock after the new order is published but
before resize clears the old-order free_page, tag that old page with
the new order, and return it.

I can keep the allocations outside buffer->mutex and hold the mutex
only while snapshotting subbuf_order and taking or returning
free_page. That removes allocation from the critical section and
serializes the order/free-page pair with resize. Would you prefer
that, or should free_page and the order transition be synchronized
another way?
Nothing should be reading when the subbuf_order is being updated. Let's add
a flag to state that it's being updated, and make all reads simply fail
during that time.

-- Steve
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help