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

Steven Rostedt posted 2 patches 1 month, 1 week ago
kernel/trace/ring_buffer.c | 44 ++++++++++++++++++++++++++------------------
kernel/trace/trace.c       |  6 +++---
2 files changed, 29 insertions(+), 21 deletions(-)
[for-next][PATCH 0/2] ring-buffer: Fixes for v6.12
Posted by Steven Rostedt 1 month, 1 week ago
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.

  git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
ring-buffer/urgent

Head SHA1: 09661f75e75cb6c1d2d8326a70c311d46729235f


Petr Pavlu (1):
      ring-buffer: Fix reader locking when changing the sub buffer order

Steven Rostedt (1):
      ring-buffer: Fix refcount setting of boot mapped buffers

----
 kernel/trace/ring_buffer.c | 44 ++++++++++++++++++++++++++------------------
 kernel/trace/trace.c       |  6 +++---
 2 files changed, 29 insertions(+), 21 deletions(-)
Re: [for-next][PATCH 0/2] ring-buffer: Fixes for v6.12
Posted by Steven Rostedt 1 month, 1 week ago
On Tue, 15 Oct 2024 11:31:05 -0400
Steven Rostedt <rostedt@goodmis.org> 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