ftrace: Fix missing synchronize_rcu() removing trampoline from kallsyms
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 1 Sep 2020 09:16:17 +0000 (12:16 +0300)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Fri, 18 Sep 2020 16:22:42 +0000 (12:22 -0400)
Add synchronize_rcu() after list_del_rcu() in
ftrace_remove_trampoline_from_kallsyms() to protect readers of
ftrace_ops_trampoline_list (in ftrace_get_trampoline_kallsym)
which is used when kallsyms is read.

Link: https://lkml.kernel.org/r/20200901091617.31837-1-adrian.hunter@intel.com
Fixes: fc0ea795f53c8d ("ftrace: Add symbols for ftrace trampolines")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/ftrace.c

index 656d7cb..e9f8933 100644 (file)
@@ -2782,6 +2782,7 @@ static void ftrace_remove_trampoline_from_kallsyms(struct ftrace_ops *ops)
 {
        lockdep_assert_held(&ftrace_lock);
        list_del_rcu(&ops->list);
+       synchronize_rcu();
 }
 
 /*