summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2025-02-13 13:41:32 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-02-27 04:30:16 -0800
commit1e6419b1a41da83ed63b98c40e5f4f3781fedd48 (patch)
treec2729c771985a20eac5af8770792569542f2b969 /kernel
parent3284fbfa87115f4295c9a9edd2a4d02b337fd2ca (diff)
downloadlinux-1e6419b1a41da83ed63b98c40e5f4f3781fedd48.tar.gz
linux-1e6419b1a41da83ed63b98c40e5f4f3781fedd48.tar.bz2
linux-1e6419b1a41da83ed63b98c40e5f4f3781fedd48.zip
tracing: Have the error of __tracing_resize_ring_buffer() passed to user
[ Upstream commit 60b8f711143de7cd9c0f55be0fe7eb94b19eb5c7 ] Currently if __tracing_resize_ring_buffer() returns an error, the tracing_resize_ringbuffer() returns -ENOMEM. But it may not be a memory issue that caused the function to fail. If the ring buffer is memory mapped, then the resizing of the ring buffer will be disabled. But if the user tries to resize the buffer, it will get an -ENOMEM returned, which is confusing because there is plenty of memory. The actual error returned was -EBUSY, which would make much more sense to the user. Cc: stable@vger.kernel.org Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Vincent Donnefort <vdonnefort@google.com> Link: https://lore.kernel.org/20250213134132.7e4505d7@gandalf.local.home Fixes: 117c39200d9d7 ("ring-buffer: Introducing ring-buffer mapping functions") Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/trace/trace.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index f03eef90de54..1142a7802bb6 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -5998,8 +5998,6 @@ static int __tracing_resize_ring_buffer(struct trace_array *tr,
ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
unsigned long size, int cpu_id)
{
- int ret;
-
guard(mutex)(&trace_types_lock);
if (cpu_id != RING_BUFFER_ALL_CPUS) {
@@ -6008,11 +6006,7 @@ ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
return -EINVAL;
}
- ret = __tracing_resize_ring_buffer(tr, size, cpu_id);
- if (ret < 0)
- ret = -ENOMEM;
-
- return ret;
+ return __tracing_resize_ring_buffer(tr, size, cpu_id);
}
static void update_last_data(struct trace_array *tr)