diff options
| -rw-r--r-- | kernel/trace/trace.c | 21 |
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 | ||
| 6245 | static 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 | |||
| 6245 | static void free_trace_buffers(struct trace_array *tr) | 6255 | static 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 | ||
