mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 06:12:08 +00:00
tracing: Use free_trace_buffer() in allocate_trace_buffers()
In allocate_trace_buffers(), if allocating tr->max_buffer fails, we can directly call free_trace_buffer to free tr->array_buffer. Link: https://lkml.kernel.org/r/65f0702d-07f6-08de-2a07-4c50af56a67b@huawei.com Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
4c3d2f9388
commit
59927cbe3f
@ -9101,6 +9101,16 @@ allocate_trace_buffer(struct trace_array *tr, struct array_buffer *buf, int size
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void free_trace_buffer(struct array_buffer *buf)
|
||||||
|
{
|
||||||
|
if (buf->buffer) {
|
||||||
|
ring_buffer_free(buf->buffer);
|
||||||
|
buf->buffer = NULL;
|
||||||
|
free_percpu(buf->data);
|
||||||
|
buf->data = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int allocate_trace_buffers(struct trace_array *tr, int size)
|
static int allocate_trace_buffers(struct trace_array *tr, int size)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -9113,10 +9123,7 @@ static int allocate_trace_buffers(struct trace_array *tr, int size)
|
|||||||
ret = allocate_trace_buffer(tr, &tr->max_buffer,
|
ret = allocate_trace_buffer(tr, &tr->max_buffer,
|
||||||
allocate_snapshot ? size : 1);
|
allocate_snapshot ? size : 1);
|
||||||
if (MEM_FAIL(ret, "Failed to allocate trace buffer\n")) {
|
if (MEM_FAIL(ret, "Failed to allocate trace buffer\n")) {
|
||||||
ring_buffer_free(tr->array_buffer.buffer);
|
free_trace_buffer(&tr->array_buffer);
|
||||||
tr->array_buffer.buffer = NULL;
|
|
||||||
free_percpu(tr->array_buffer.data);
|
|
||||||
tr->array_buffer.data = NULL;
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
tr->allocated_snapshot = allocate_snapshot;
|
tr->allocated_snapshot = allocate_snapshot;
|
||||||
@ -9131,16 +9138,6 @@ static int allocate_trace_buffers(struct trace_array *tr, int size)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void free_trace_buffer(struct array_buffer *buf)
|
|
||||||
{
|
|
||||||
if (buf->buffer) {
|
|
||||||
ring_buffer_free(buf->buffer);
|
|
||||||
buf->buffer = NULL;
|
|
||||||
free_percpu(buf->data);
|
|
||||||
buf->data = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void free_trace_buffers(struct trace_array *tr)
|
static void free_trace_buffers(struct trace_array *tr)
|
||||||
{
|
{
|
||||||
if (!tr)
|
if (!tr)
|
||||||
|
Loading…
Reference in New Issue
Block a user