Qiu Peiyang
5156dca34a
ftrace: Fix the race between ftrace and insmod
...
We hit ftrace_bug report when booting Android on a 64bit ATOM SOC chip.
Basically, there is a race between insmod and ftrace_run_update_code.
After load_module=>ftrace_module_init, another thread jumps in to call
ftrace_run_update_code=>ftrace_arch_code_modify_prepare
=>set_all_modules_text_rw, to change all modules
as RW. Since the new module is at MODULE_STATE_UNFORMED, the text attribute
is not changed. Then, the 2nd thread goes ahead to change codes.
However, load_module continues to call complete_formation=>set_section_ro_nx,
then 2nd thread would fail when probing the module's TEXT.
The patch fixes it by using notifier to delay the enabling of ftrace
records to the time when module is at state MODULE_STATE_COMING.
Link: http://lkml.kernel.org/r/567CE628.3000609@intel.com
Signed-off-by: Qiu Peiyang <peiyangx.qiu@intel.com>
Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2016-01-07 15:56:21 -05:00
..
blktrace.c
Most of the changes are clean ups and small fixes. Some of them have
2015-11-06 13:30:20 -08:00
bpf_trace.c
bpf: Constify bpf_verifier_ops structure
2015-12-23 14:27:19 -05:00
ftrace.c
ftrace: Fix the race between ftrace and insmod
2016-01-07 15:56:21 -05:00
Kconfig
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-11-10 18:11:41 -08:00
Makefile
power-traces.c
ring_buffer.c
ring-buffer: Process commits whenever moving to a new page.
2015-11-25 15:24:05 -05:00
ring_buffer_benchmark.c
ring_buffer: Remove unneeded smp_wmb() before wakeup of reader benchmark
2015-11-03 16:19:02 -05:00
rpm-traces.c
trace.c
tracing: #ifdef out uses of max trace when CONFIG_TRACER_MAX_TRACE is not set
2015-11-10 10:16:05 -05:00
trace.h
tracing: Fix comment to use tracing_on over tracing_enable
2015-12-23 14:27:25 -05:00
trace_benchmark.c
tracing: Only benchmark the time tracepoints take if tracing is on
2015-11-02 13:34:58 -05:00
trace_benchmark.h
trace_branch.c
tracing: Remove {start,stop}_branch_trace
2015-10-21 10:10:09 -04:00
trace_clock.c
trace_entries.h
trace_event_perf.c
ftrace: Remove use of control list and ops
2015-12-23 14:27:18 -05:00
trace_events.c
Most of the changes are clean ups and small fixes. Some of them have
2015-11-06 13:30:20 -08:00
trace_events_filter.c
tracing: is_legal_op() can return boolean
2015-11-02 14:26:51 -05:00
trace_events_filter_test.h
trace_events_trigger.c
tracing: Update cond flag when enabling or disabling a trigger
2015-11-25 15:24:14 -05:00
trace_export.c
tracing: ftrace_event_is_function() can return boolean
2015-11-02 14:28:05 -05:00
trace_functions.c
trace_functions_graph.c
tracing: Remove unused ftrace_cpu_disabled per cpu variable
2015-11-07 13:25:14 -05:00
trace_irqsoff.c
tracing: report_latency() in trace_irqsoff.c can return boolean
2015-11-02 14:20:19 -05:00
trace_kdb.c
tracing: Move trace_flags from global to a trace_array field
2015-09-30 15:22:55 -04:00
trace_kprobe.c
trace_mmiotrace.c
tracing: Pass trace_array into trace_buffer_unlock_commit()
2015-09-25 17:38:44 -04:00
trace_nop.c
trace_output.c
tracing: Move trace_flags from global to a trace_array field
2015-09-30 15:22:55 -04:00
trace_output.h
tracing: Turn seq_print_user_ip() into a static function
2015-09-28 10:16:12 -04:00
trace_printk.c
tracing: Remove access to trace_flags in trace_printk.c
2015-09-30 04:35:18 -04:00
trace_probe.c
trace_probe.h
kernel/trace_probe: is_good_name can be boolean
2015-09-22 13:11:30 -04:00
trace_sched_switch.c
sched/core: Fix trace_sched_switch()
2015-10-06 17:08:15 +02:00
trace_sched_wakeup.c
Most of the changes are clean ups and small fixes. Some of them have
2015-11-06 13:30:20 -08:00
trace_selftest.c
trace_selftest_dynamic.c
trace_seq.c
trace_stack.c
Most of the changes are clean ups and small fixes. Some of them have
2015-11-06 13:30:20 -08:00
trace_stat.c
trace_stat.h
trace_syscalls.c
tracing: Move trace_flags from global to a trace_array field
2015-09-30 15:22:55 -04:00
trace_uprobe.c