ring-buffer: Unlock resize on mmap error
authorSteven Rostedt <rostedt@goodmis.org>
Thu, 13 Feb 2025 18:19:57 +0000 (13:19 -0500)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Fri, 14 Feb 2025 17:50:05 +0000 (12:50 -0500)
Memory mapping the tracing ring buffer will disable resizing the buffer.
But if there's an error in the memory mapping like an invalid parameter,
the function exits out without re-enabling the resizing of the ring
buffer, preventing the ring buffer from being resized after that.

Cc: stable@vger.kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Vincent Donnefort <vdonnefort@google.com>
Link: https://lore.kernel.org/20250213131957.530ec3c5@gandalf.local.home
Fixes: 117c39200d9d7 ("ring-buffer: Introducing ring-buffer mapping functions")
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/ring_buffer.c

index b8e0ae15ca5b6d46886b8fb2a533ebd8b727edfd..07b421115692c3e4c9e468565ad5715d72c964f0 100644 (file)
@@ -7126,6 +7126,7 @@ int ring_buffer_map(struct trace_buffer *buffer, int cpu,
                kfree(cpu_buffer->subbuf_ids);
                cpu_buffer->subbuf_ids = NULL;
                rb_free_meta_page(cpu_buffer);
+               atomic_dec(&cpu_buffer->resize_disabled);
        }
 
 unlock: