Re: [PATCH v5 11/17] perf: Simplify get_perf_callchain() user logic
Peter Zijlstra <[email protected]> Thu, 24 Apr 2025 18:36:07 +0200
| Newsgroups | org.kernel.vger.linux-toolchains,org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users,org.kernel.vger.linux-trace-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Apr 24, 2025 at 12:25:40PM -0400, Steven Rostedt wrote: > From: Josh Poimboeuf <[email protected]> > > Simplify the get_perf_callchain() user logic a bit. task_pt_regs() > should never be NULL. > > Acked-by: Namhyung Kim <[email protected]> > Signed-off-by: Josh Poimboeuf <[email protected]> > Signed-off-by: Steven Rostedt (Google) <[email protected]> > --- > kernel/events/callchain.c | 20 +++++++++----------- > 1 file changed, 9 insertions(+), 11 deletions(-) > > diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c > index abf258913ab6..bba7f8540ade 100644 > --- a/kernel/events/callchain.c > +++ b/kernel/events/callchain.c > @@ -246,22 +246,20 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, bool user, > > if (user) { > if (!user_mode(regs)) { > - if (current->mm) > - regs = task_pt_regs(current); > - else > - regs = NULL; > + if (!current->mm) > + goto exit_put; > + regs = task_pt_regs(current); I'm thinking this might be one of those is-kthread test written as has-mm, and they're broken. Notably things like the io-uring kthreads do have mm. > } > > - if (regs) { > - if (add_mark) > - perf_callchain_store_context(&ctx, PERF_CONTEXT_USER); > + if (add_mark) > + perf_callchain_store_context(&ctx, PERF_CONTEXT_USER); > > - start_entry_idx = entry->nr; > - perf_callchain_user(&ctx, regs); > - fixup_uretprobe_trampoline_entries(entry, start_entry_idx); > - } > + start_entry_idx = entry->nr; > + perf_callchain_user(&ctx, regs); > + fixup_uretprobe_trampoline_entries(entry, start_entry_idx); > } > > +exit_put: > put_callchain_entry(rctx); > > return entry; > -- > 2.47.2 > >