diff options
Diffstat (limited to 'kernel/trace/trace_stack.c')
-rw-r--r-- | kernel/trace/trace_stack.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 0398b7c7afd6..d4545f49242e 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c | |||
@@ -13,6 +13,9 @@ | |||
13 | #include <linux/sysctl.h> | 13 | #include <linux/sysctl.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/fs.h> | 15 | #include <linux/fs.h> |
16 | |||
17 | #include <asm/setup.h> | ||
18 | |||
16 | #include "trace.h" | 19 | #include "trace.h" |
17 | 20 | ||
18 | #define STACK_TRACE_ENTRIES 500 | 21 | #define STACK_TRACE_ENTRIES 500 |
@@ -352,8 +355,13 @@ stack_trace_sysctl(struct ctl_table *table, int write, | |||
352 | return ret; | 355 | return ret; |
353 | } | 356 | } |
354 | 357 | ||
358 | static char stack_trace_filter_buf[COMMAND_LINE_SIZE+1] __initdata; | ||
359 | |||
355 | static __init int enable_stacktrace(char *str) | 360 | static __init int enable_stacktrace(char *str) |
356 | { | 361 | { |
362 | if (strncmp(str, "_filter=", 8) == 0) | ||
363 | strncpy(stack_trace_filter_buf, str+8, COMMAND_LINE_SIZE); | ||
364 | |||
357 | stack_tracer_enabled = 1; | 365 | stack_tracer_enabled = 1; |
358 | last_stack_tracer_enabled = 1; | 366 | last_stack_tracer_enabled = 1; |
359 | return 1; | 367 | return 1; |
@@ -375,6 +383,9 @@ static __init int stack_trace_init(void) | |||
375 | trace_create_file("stack_trace_filter", 0444, d_tracer, | 383 | trace_create_file("stack_trace_filter", 0444, d_tracer, |
376 | NULL, &stack_trace_filter_fops); | 384 | NULL, &stack_trace_filter_fops); |
377 | 385 | ||
386 | if (stack_trace_filter_buf[0]) | ||
387 | ftrace_set_early_filter(&trace_ops, stack_trace_filter_buf, 1); | ||
388 | |||
378 | if (stack_tracer_enabled) | 389 | if (stack_tracer_enabled) |
379 | register_ftrace_function(&trace_ops); | 390 | register_ftrace_function(&trace_ops); |
380 | 391 | ||