Re: [for-next][PATCH 0/2] ring-buffer: Fixes for v6.12

From: Steven Rostedt
Date: Tue Oct 15 2024 - 11:34:27 EST


On Tue, 15 Oct 2024 11:31:05 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> ring-buffer: Fixes for v6.12
>
> - Fix ref counter of buffers assigned at boot up
>
> A tracing instance can be created from the kernel command line.
> If it maps to memory, it is considered permanent and should not
> be deleted, or bad things can happen. If it is not mapped to memory,
> then the user is fine to delete it via rmdir from the instances
> directory. But the ref counts assumed 0 was free to remove and
> greater than zero was not. But this was not the case. When an
> instance is created, it should have the reference of 1, and if
> it should not be removed, it must be greater than 1. The boot up
> code set normal instances with a ref count of 0, which could get
> removed if something accessed it and then released it. And memory
> mapped instances had a ref count of 1 which meant it could be deleted,
> and bad things happen. Keep normal instances ref count as 1, and
> set memory mapped instances ref count to 2.
>
> - Protect sub buffer size (order) updates from other modifications
>
> When a ring buffer is changing the size of its sub-buffers, no other
> operations should be performed on the ring buffer. That includes
> reading it. But the locking only grabbed the buffer->mutex that
> keeps some operations from touching the ring buffer. It also must
> hold the cpu_buffer->reader_lock as well when updates happen as
> other paths use that to do some operations on the ring buffer.

Oops, used the wrong script. This was supposed to be "for-linus" not "for-next".

Oh well.

-- Steve