From: "Steven Rostedt (VMware)" <[email protected]>

trace_parser_put() simply frees the allocated parser buffer. But it does not
reset the pointer that was freed. This means that if trace_parser_put() is
called on the same parser more than once, it will corrupt the allocation
system. Setting parser->buffer to NULL after free allows it to be called
more than once without any ill effect.

Signed-off-by: Steven Rostedt (VMware) <[email protected]>
---
 kernel/trace/trace.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index d7449783987a..4589b67168fc 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -1193,6 +1193,7 @@ int trace_parser_get_init(struct trace_parser *parser, 
int size)
 void trace_parser_put(struct trace_parser *parser)
 {
        kfree(parser->buffer);
+       parser->buffer = NULL;
 }
 
 /*
-- 
2.10.2


Reply via email to