ftrace: Assign RCU list variable with rcu_assign_ptr()
authorSteven Rostedt (Google) <rostedt@goodmis.org>
Wed, 5 Jun 2024 20:26:47 +0000 (16:26 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Thu, 6 Jun 2024 19:22:18 +0000 (15:22 -0400)
Use rcu_assign_ptr() to assign the list pointer as it is marked as RCU,
and this quiets the sparse warning:

   kernel/trace/ftrace.c:313:23: warning: incorrect type in assignment (different address spaces)
   kernel/trace/ftrace.c:313:23:    expected struct ftrace_ops [noderef] __rcu *
   kernel/trace/ftrace.c:313:23:    got struct ftrace_ops *

Link: https://lore.kernel.org/linux-trace-kernel/20240605202708.613471310@goodmis.org
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/ftrace.c

index 034242675e7bf27d222a10af3649ac2c4d503828..4aeb1183ea9fccdbea9d813027f0e794fe9b7d2b 100644 (file)
@@ -311,7 +311,7 @@ static int remove_ftrace_ops(struct ftrace_ops __rcu **list,
                        lockdep_is_held(&ftrace_lock)) == ops &&
            rcu_dereference_protected(ops->next,
                        lockdep_is_held(&ftrace_lock)) == &ftrace_list_end) {
-               *list = &ftrace_list_end;
+               rcu_assign_pointer(*list, &ftrace_list_end);
                return 0;
        }