提交 5e01cb69 编写于 作者: M Markus Metzger 提交者: Ingo Molnar

x86, ftrace: fix section mismatch in hw-branch-tracer

Fix an invalid memory reference problem when cpu hotplug support is
disabled and the hw-branch-tracer is set as current tracer.

Initializing the tracer calls bts_trace_init() which has already
been freed at this time.
Reported-by: NFrederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: NMarkus Metzger <markus.t.metzger@intel.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 a7f4463e
...@@ -127,20 +127,18 @@ static struct notifier_block bts_hotcpu_notifier __cpuinitdata = { ...@@ -127,20 +127,18 @@ static struct notifier_block bts_hotcpu_notifier __cpuinitdata = {
.notifier_call = bts_hotcpu_handler .notifier_call = bts_hotcpu_handler
}; };
static int __cpuinit bts_trace_init(struct trace_array *tr) static int bts_trace_init(struct trace_array *tr)
{ {
hw_branch_trace = tr; hw_branch_trace = tr;
register_hotcpu_notifier(&bts_hotcpu_notifier);
bts_trace_start(tr); bts_trace_start(tr);
return 0; return 0;
} }
static void __cpuinit bts_trace_reset(struct trace_array *tr) static void bts_trace_reset(struct trace_array *tr)
{ {
bts_trace_stop(tr); bts_trace_stop(tr);
unregister_hotcpu_notifier(&bts_hotcpu_notifier);
} }
static void bts_trace_print_header(struct seq_file *m) static void bts_trace_print_header(struct seq_file *m)
...@@ -299,6 +297,7 @@ struct tracer bts_tracer __read_mostly = ...@@ -299,6 +297,7 @@ struct tracer bts_tracer __read_mostly =
__init static int init_bts_trace(void) __init static int init_bts_trace(void)
{ {
register_hotcpu_notifier(&bts_hotcpu_notifier);
return register_tracer(&bts_tracer); return register_tracer(&bts_tracer);
} }
device_initcall(init_bts_trace); device_initcall(init_bts_trace);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册