ftrace: Introduce PERMANENT ftrace_ops flag
authorMiroslav Benes <mbenes@suse.cz>
Wed, 16 Oct 2019 11:33:13 +0000 (13:33 +0200)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 4 Nov 2019 14:33:15 +0000 (09:33 -0500)
commit7162431dcf72032835d369c8d7b51311df407938
tree194454e629a477bba5410fc5eab3303c5c089de4
parenta99d8080aaf358d5d23581244e5da23b35e340b9
ftrace: Introduce PERMANENT ftrace_ops flag

Livepatch uses ftrace for redirection to new patched functions. It means
that if ftrace is disabled, all live patched functions are disabled as
well. Toggling global 'ftrace_enabled' sysctl thus affect it directly.
It is not a problem per se, because only administrator can set sysctl
values, but it still may be surprising.

Introduce PERMANENT ftrace_ops flag to amend this. If the
FTRACE_OPS_FL_PERMANENT is set on any ftrace ops, the tracing cannot be
disabled by disabling ftrace_enabled. Equally, a callback with the flag
set cannot be registered if ftrace_enabled is disabled.

Link: http://lkml.kernel.org/r/20191016113316.13415-2-mbenes@suse.cz
Reviewed-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Signed-off-by: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Documentation/trace/ftrace-uses.rst
Documentation/trace/ftrace.rst
include/linux/ftrace.h
kernel/livepatch/patch.c
kernel/trace/ftrace.c