android_kernel_sony_sdm845/kernel/trace
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Cheng Jian 81c09bab09 ftrace: Enable trampoline when rec count returns back to one
[ Upstream commit a124692b698b00026a58d89831ceda2331b2e1d0 ]

Custom trampolines can only be enabled if there is only a single ops
attached to it. If there's only a single callback registered to a function,
and the ops has a trampoline registered for it, then we can call the
trampoline directly. This is very useful for improving the performance of
ftrace and livepatch.

If more than one callback is registered to a function, the general
trampoline is used, and the custom trampoline is not restored back to the
direct call even if all the other callbacks were unregistered and we are
back to one callback for the function.

To fix this, set FTRACE_FL_TRAMP flag if rec count is decremented
to one, and the ops that left has a trampoline.

Testing After this patch :

insmod livepatch_unshare_files.ko
cat /sys/kernel/debug/tracing/enabled_functions

	unshare_files (1) R I	tramp: 0xffffffffc0000000(klp_ftrace_handler+0x0/0xa0) ->ftrace_ops_assist_func+0x0/0xf0

echo unshare_files > /sys/kernel/debug/tracing/set_ftrace_filter
echo function > /sys/kernel/debug/tracing/current_tracer
cat /sys/kernel/debug/tracing/enabled_functions

	unshare_files (2) R I ->ftrace_ops_list_func+0x0/0x150

echo nop > /sys/kernel/debug/tracing/current_tracer
cat /sys/kernel/debug/tracing/enabled_functions

	unshare_files (1) R I	tramp: 0xffffffffc0000000(klp_ftrace_handler+0x0/0xa0) ->ftrace_ops_assist_func+0x0/0xf0

Link: http://lkml.kernel.org/r/1556969979-111047-1-git-send-email-cj.chengjian@huawei.com

Signed-off-by: Cheng Jian <cj.chengjian@huawei.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-08-06 18:29:35 +02:00
..
blktrace.c tracing/blktrace: Fix to allow setting same value 2018-09-09 20:01:22 +02:00
bpf_trace.c bpf: fix check of allowed specifiers in bpf_trace_printk 2018-12-17 09:38:33 +01:00
ftrace.c ftrace: Enable trampoline when rec count returns back to one 2019-08-06 18:29:35 +02:00
Kconfig This release cycle is rather small. Just a few fixes to tracing. 2016-10-06 11:48:41 -07:00
Makefile Disable the __builtin_return_address() warning globally after all 2016-10-12 10:23:41 -07:00
power-traces.c cpufreq: schedutil: New governor based on scheduler utilization data 2016-04-02 01:09:12 +02:00
ring_buffer.c trace: Fix preempt_enable_no_resched() abuse 2019-05-02 09:32:00 +02: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/snapshot: Resize spare buffer if size changed 2019-08-04 09:33:26 +02:00
trace.h tracing: Silence GCC 9 array bounds warning 2019-07-10 09:55:28 +02: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 tracing: Add NMI tracing in hwlat detector 2016-09-02 12:47:55 -04:00
trace_event_perf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-05-17 16:26:30 -07:00
trace_events.c tracing: Fix partial reading of trace event's id file 2019-05-25 18:26:49 +02:00
trace_events_filter.c tracing: Fix regex_match_front() to not over compare the test string 2018-05-16 10:08:43 +02:00
trace_events_filter_test.h
trace_events_hist.c tracing: Use strncpy instead of memcpy for string keys in hist triggers 2019-03-23 13:19:45 +01:00
trace_events_trigger.c tracing: Fix memory leak in set_trigger_filter() 2018-12-21 14:11:31 +01:00
trace_export.c tracing: ftrace_event_is_function() can return boolean 2015-11-02 14:28:05 -05:00
trace_functions.c ftrace: Have set_ftrace_pid use the bitmap like events do 2016-06-20 09:54:19 -04:00
trace_functions_graph.c tracing: Fix missing return symbol in function_graph output 2018-07-11 16:26:43 +02:00
trace_hwlat.c tracing: Fix hwlat kthread migration 2017-02-09 08:08:28 +01:00
trace_irqsoff.c tracing: Remove redundant reset per-CPU buff in irqsoff tracer 2016-03-18 16:39:11 -04:00
trace_kdb.c tracing: Silence GCC 9 array bounds warning 2019-07-10 09:55:28 +02:00
trace_kprobe.c tracing: Quiet gcc warning about maybe unused link variable 2018-08-03 07:55:12 +02:00
trace_mmiotrace.c tracing: Expose CPU physical addresses (resource values) for PCI devices 2016-06-20 09:54:22 -04:00
trace_nop.c tracing: Fix typoes in code comment and printk in trace_nop.c 2016-03-08 11:23:57 -05:00
trace_output.c tracing: Add NMI tracing in hwlat detector 2016-09-02 12:47: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: Handle NULL formats in hold_module_trace_bprintk_format() 2016-06-20 09:46:12 -04:00
trace_probe.c tracing: probeevent: Fix to support minus offset from symbol 2018-03-28 18:39:23 +02:00
trace_probe.h tracing: probeevent: Fix to support minus offset from symbol 2018-03-28 18:39:23 +02: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 ftrace: Fix selftest goto location on error 2017-09-27 14:39:23 +02:00
trace_selftest_dynamic.c
trace_seq.c
trace_stack.c tracing, kasan: Silence Kasan warning in check_stack of stack_tracer 2016-02-19 12:36:44 -05:00
trace_stat.c kernel/...: convert pr_warning to pr_warn 2016-03-22 15:36:02 -07:00
trace_stat.h
trace_syscalls.c tracing/syscalls: fix multiline in error message text 2016-09-29 10:25:23 +02:00
trace_uprobe.c tracing/uprobes: Fix output for multiple string arguments 2019-02-20 10:18:32 +01:00
tracing_map.c tracing: Fix kmemleak in tracing_map_array_free() 2017-08-30 10:21:49 +02:00
tracing_map.h tracing: Update some tracing_map constants and comments 2016-04-19 12:16:06 -04:00