aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/trace/trace.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 2b458c60e0da..384ede311717 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6242,22 +6242,25 @@ static int allocate_trace_buffers(struct trace_array *tr, int size)
6242 return 0; 6242 return 0;
6243} 6243}
6244 6244
6245static void free_trace_buffer(struct trace_buffer *buf)
6246{
6247 if (buf->buffer) {
6248 ring_buffer_free(buf->buffer);
6249 buf->buffer = NULL;
6250 free_percpu(buf->data);
6251 buf->data = NULL;
6252 }
6253}
6254
6245static void free_trace_buffers(struct trace_array *tr) 6255static void free_trace_buffers(struct trace_array *tr)
6246{ 6256{
6247 if (!tr) 6257 if (!tr)
6248 return; 6258 return;
6249 6259
6250 if (tr->trace_buffer.buffer) { 6260 free_trace_buffer(&tr->trace_buffer);
6251 ring_buffer_free(tr->trace_buffer.buffer);
6252 tr->trace_buffer.buffer = NULL;
6253 free_percpu(tr->trace_buffer.data);
6254 }
6255 6261
6256#ifdef CONFIG_TRACER_MAX_TRACE 6262#ifdef CONFIG_TRACER_MAX_TRACE
6257 if (tr->max_buffer.buffer) { 6263 free_trace_buffer(&tr->max_buffer);
6258 ring_buffer_free(tr->max_buffer.buffer);
6259 tr->max_buffer.buffer = NULL;
6260 }
6261#endif 6264#endif
6262} 6265}
6263 6266