OSDN Git Service

tracing: Fix uninitialized buffer var on early exit to trace_vbprintk()
authorSteven Rostedt (VMware) <rostedt@goodmis.org>
Wed, 22 Jan 2020 11:44:50 +0000 (06:44 -0500)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Wed, 22 Jan 2020 11:44:50 +0000 (06:44 -0500)
If we exit due to a bad input to trace_printk() (highly unlikely), then the
buffer variable will not be initialized when we unnest the ring buffer.

Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace.c

index 2e1db19..d1410b4 100644 (file)
@@ -3230,7 +3230,7 @@ int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
        len = vbin_printf((u32 *)tbuffer, TRACE_BUF_SIZE/sizeof(int), fmt, args);
 
        if (len > TRACE_BUF_SIZE/sizeof(int) || len < 0)
-               goto out;
+               goto out_put;
 
        local_save_flags(flags);
        size = sizeof(*entry) + sizeof(u32) * len;
@@ -3252,6 +3252,7 @@ int trace_vbprintk(unsigned long ip, const char *fmt, va_list args)
 
 out:
        ring_buffer_nest_end(buffer);
+out_put:
        put_trace_buf();
 
 out_nobuffer: