mirror of https://gitee.com/openkylin/linux.git
tracing: Check if tracing is enabled in trace_puts()
If trace_puts() is used very early in boot up, it can crash the machine
if it is called before the ring buffer is allocated. If a trace_printk()
is used with no arguments, then it will be converted into a trace_puts()
and suffer the same fate.
Cc: stable@vger.kernel.org # 3.10+
Fixes: 09ae72348e
"tracing: Add trace_puts() for even faster trace_printk() tracing"
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
71485c4589
commit
3132e107d6
|
@ -455,6 +455,9 @@ int __trace_puts(unsigned long ip, const char *str, int size)
|
|||
unsigned long irq_flags;
|
||||
int alloc;
|
||||
|
||||
if (unlikely(tracing_selftest_running || tracing_disabled))
|
||||
return 0;
|
||||
|
||||
alloc = sizeof(*entry) + size + 2; /* possible \n added */
|
||||
|
||||
local_save_flags(irq_flags);
|
||||
|
@ -495,6 +498,9 @@ int __trace_bputs(unsigned long ip, const char *str)
|
|||
unsigned long irq_flags;
|
||||
int size = sizeof(struct bputs_entry);
|
||||
|
||||
if (unlikely(tracing_selftest_running || tracing_disabled))
|
||||
return 0;
|
||||
|
||||
local_save_flags(irq_flags);
|
||||
buffer = global_trace.trace_buffer.buffer;
|
||||
event = trace_buffer_lock_reserve(buffer, TRACE_BPUTS, size,
|
||||
|
|
Loading…
Reference in New Issue