Thread (6 messages) 6 messages, 2 authors, 2022-11-03

Re: [PATCH v2] ftrace: Fix use-after-free for dynamic ftrace_ops

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2022-11-03 03:23:46
Also in: lkml

On Thu, 3 Nov 2022 11:10:10 +0800
Li Huafei [off-list ref] wrote:
quoted hunk ↗ jump to hunk
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -3028,18 +3028,8 @@ int ftrace_shutdown(struct ftrace_ops *ops, int command)
 		command |= FTRACE_UPDATE_TRACE_FUNC;
 	}
 
-	if (!command || !ftrace_enabled) {
-		/*
-		 * If these are dynamic or per_cpu ops, they still
-		 * need their data freed. Since, function tracing is
-		 * not currently active, we can just free them
-		 * without synchronizing all CPUs.
-		 */
-		if (ops->flags & FTRACE_OPS_FL_DYNAMIC)
-			goto free_ops;
-
-		return 0;
-	}
+	if (!command || !ftrace_enabled)
+		goto out;
 
Hi Li,

I think you misunderstood me. What I was suggesting was to get rid of
the ftrace_enabled check. The DYNAMIC part is most definitely needed.

	if (!command) {
		if (ops->flags & FTRACE_OPS_FL_DYNAMIC)
			goto out;
		return 0;
	}

-- Steve
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help