diff options
author | Steven Rostedt (VMware) <[email protected]> | 2017-12-26 20:07:34 -0500 |
---|---|---|
committer | Steven Rostedt (VMware) <[email protected]> | 2017-12-27 14:21:27 -0500 |
commit | 4397f04575c44e1440ec2e49b6302785c95fd2f8 (patch) | |
tree | f19586c8935eb246577a72637c12378bf10fede1 | |
parent | 24f2aaf952ee0b59f31c3a18b8b36c9e3d3c2cf5 (diff) |
tracing: Fix possible double free on failure of allocating trace buffer
Jing Xia and Chunyan Zhang reported that on failing to allocate part of the
tracing buffer, memory is freed, but the pointers that point to them are not
initialized back to NULL, and later paths may try to free the freed memory
again. Jing and Chunyan fixed one of the locations that does this, but
missed a spot.
Link: http://lkml.kernel.org/r/[email protected]
Cc: [email protected]
Fixes: 737223fbca3b1 ("tracing: Consolidate buffer allocation code")
Reported-by: Jing Xia <[email protected]>
Reported-by: Chunyan Zhang <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
-rw-r--r-- | kernel/trace/trace.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 0e53d46544b8..2a8d8a294345 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -7580,6 +7580,7 @@ allocate_trace_buffer(struct trace_array *tr, struct trace_buffer *buf, int size buf->data = alloc_percpu(struct trace_array_cpu); if (!buf->data) { ring_buffer_free(buf->buffer); + buf->buffer = NULL; return -ENOMEM; } |