perf: Simplify get_perf_callchain() user logic

Simplify the get_perf_callchain() user logic a bit.  task_pt_regs()
should never be NULL.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20250820180428.760066227@kernel.org
This commit is contained in:
Josh Poimboeuf
2025-08-20 14:03:42 -04:00
committed by Peter Zijlstra
parent 90942f9fac
commit d77e3319e3

View File

@@ -247,21 +247,19 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, bool user,
if (user && !crosstask) {
if (!user_mode(regs)) {
if (current->flags & (PF_KTHREAD | PF_USER_WORKER))
regs = NULL;
else
regs = task_pt_regs(current);
goto exit_put;
regs = task_pt_regs(current);
}
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;