diff options
Diffstat (limited to 'kernel/trace/trace.c')
| -rw-r--r-- | kernel/trace/trace.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index f243444a3772..bda9621638cc 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
| @@ -466,6 +466,12 @@ int __trace_puts(unsigned long ip, const char *str, int size) | |||
| 466 | struct print_entry *entry; | 466 | struct print_entry *entry; |
| 467 | unsigned long irq_flags; | 467 | unsigned long irq_flags; |
| 468 | int alloc; | 468 | int alloc; |
| 469 | int pc; | ||
| 470 | |||
| 471 | if (!(trace_flags & TRACE_ITER_PRINTK)) | ||
| 472 | return 0; | ||
| 473 | |||
| 474 | pc = preempt_count(); | ||
| 469 | 475 | ||
| 470 | if (unlikely(tracing_selftest_running || tracing_disabled)) | 476 | if (unlikely(tracing_selftest_running || tracing_disabled)) |
| 471 | return 0; | 477 | return 0; |
| @@ -475,7 +481,7 @@ int __trace_puts(unsigned long ip, const char *str, int size) | |||
| 475 | local_save_flags(irq_flags); | 481 | local_save_flags(irq_flags); |
| 476 | buffer = global_trace.trace_buffer.buffer; | 482 | buffer = global_trace.trace_buffer.buffer; |
| 477 | event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc, | 483 | event = trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc, |
| 478 | irq_flags, preempt_count()); | 484 | irq_flags, pc); |
| 479 | if (!event) | 485 | if (!event) |
| 480 | return 0; | 486 | return 0; |
| 481 | 487 | ||
| @@ -492,6 +498,7 @@ int __trace_puts(unsigned long ip, const char *str, int size) | |||
| 492 | entry->buf[size] = '\0'; | 498 | entry->buf[size] = '\0'; |
| 493 | 499 | ||
| 494 | __buffer_unlock_commit(buffer, event); | 500 | __buffer_unlock_commit(buffer, event); |
| 501 | ftrace_trace_stack(buffer, irq_flags, 4, pc); | ||
| 495 | 502 | ||
| 496 | return size; | 503 | return size; |
| 497 | } | 504 | } |
| @@ -509,6 +516,12 @@ int __trace_bputs(unsigned long ip, const char *str) | |||
| 509 | struct bputs_entry *entry; | 516 | struct bputs_entry *entry; |
| 510 | unsigned long irq_flags; | 517 | unsigned long irq_flags; |
| 511 | int size = sizeof(struct bputs_entry); | 518 | int size = sizeof(struct bputs_entry); |
| 519 | int pc; | ||
| 520 | |||
| 521 | if (!(trace_flags & TRACE_ITER_PRINTK)) | ||
| 522 | return 0; | ||
| 523 | |||
| 524 | pc = preempt_count(); | ||
| 512 | 525 | ||
| 513 | if (unlikely(tracing_selftest_running || tracing_disabled)) | 526 | if (unlikely(tracing_selftest_running || tracing_disabled)) |
| 514 | return 0; | 527 | return 0; |
| @@ -516,7 +529,7 @@ int __trace_bputs(unsigned long ip, const char *str) | |||
| 516 | local_save_flags(irq_flags); | 529 | local_save_flags(irq_flags); |
| 517 | buffer = global_trace.trace_buffer.buffer; | 530 | buffer = global_trace.trace_buffer.buffer; |
| 518 | event = trace_buffer_lock_reserve(buffer, TRACE_BPUTS, size, | 531 | event = trace_buffer_lock_reserve(buffer, TRACE_BPUTS, size, |
| 519 | irq_flags, preempt_count()); | 532 | irq_flags, pc); |
| 520 | if (!event) | 533 | if (!event) |
| 521 | return 0; | 534 | return 0; |
| 522 | 535 | ||
| @@ -525,6 +538,7 @@ int __trace_bputs(unsigned long ip, const char *str) | |||
| 525 | entry->str = str; | 538 | entry->str = str; |
| 526 | 539 | ||
| 527 | __buffer_unlock_commit(buffer, event); | 540 | __buffer_unlock_commit(buffer, event); |
| 541 | ftrace_trace_stack(buffer, irq_flags, 4, pc); | ||
| 528 | 542 | ||
| 529 | return 1; | 543 | return 1; |
| 530 | } | 544 | } |
