From: Steven Rostedt (Google) <rostedt@goodmis.org>
Date: Wed, 5 Jun 2024 20:26:47 +0000 (-0400)
Subject: ftrace: Assign RCU list variable with rcu_assign_ptr()
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0ddef5d601ff992430b7874074c3549aa66f2c85;p=users%2Fdwmw2%2Flinux.git

ftrace: Assign RCU list variable with rcu_assign_ptr()

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>
---

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 034242675e7bf..4aeb1183ea9fc 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -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;
 	}