Thread (15 messages) flat view 15 messages, 3 authors, 17d ago

Re: [PATCH v2] tracing/user_events: Clear copied tracing state before fork duplication

From: Steven Rostedt <rostedt@goodmis.org>
Date: 2026-08-27 12:18:36
Also in: lkml, stable
Subsystem: the rest, tracing · Maintainers: Linus Torvalds, Steven Rostedt, Masami Hiramatsu

On Thu, 27 Aug 2026 13:09:44 +0100
Bradley Morgan [off-list ref] wrote:
quoted
quoted
@@ -865,9 +865,12 @@ void user_event_mm_remove(struct task_struct *t)
 
 void user_event_mm_dup(struct task_struct *t, struct user_event_mm  
*old_mm)  
quoted
 {
-	struct user_event_mm *mm = user_event_mm_alloc(t);
+	struct user_event_mm *mm;  
Why this change?
 
quoted
 	struct user_event_enabler *enabler;
 
+	t->user_event_mm = NULL;
+	mm = user_event_mm_alloc(t);  
I don't see why you moved the mm assignment down here. The
t->user_event_mm
is not used in user_event_mm_alloc().  
Uff, not wrong, I must be dummy dumb dumb, well, I base my reviews off 

Does this fix the bug? And is this a small fix?
The bug is fixed because it needs to NULL out that value. I asked from v1
to move that change to this function. But this function only needs to add
that line before the return. It doesn't need to modify anything else in
that function.

That is, something like this:
diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
index 8c82ecb735f4..6b89d225b189 100644
--- a/kernel/trace/trace_events_user.c
+++ b/kernel/trace/trace_events_user.c
@@ -868,6 +868,9 @@ void user_event_mm_dup(struct task_struct *t, struct user_event_mm *old_mm)
 	struct user_event_mm *mm = user_event_mm_alloc(t);
 	struct user_event_enabler *enabler;
 
+	/* On failure, do not free parent's copy */
+	t->user_event_mm = NULL;
+
 	if (!mm)
 		return;
 

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