Re: [PATCH v2] tracing/user_events: Clear copied tracing state before fork duplication
From: Steven Rostedt
Date: Thu Aug 27 2026 - 08:18:47 EST
On Thu, 27 Aug 2026 13:09:44 +0100
Bradley Morgan <brads@xxxxxxxxxxxxxx> wrote:
> >> @@ -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)
> >> {
> >> - struct user_event_mm *mm = user_event_mm_alloc(t);
> >> + struct user_event_mm *mm;
> >
> >Why this change?
> >
> >> 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