Skip to content

Commit b45d52c

Browse files
jpoimboegregkh
authored andcommitted
perf: Simplify get_perf_callchain() user logic
[ Upstream commit d77e331 ] 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 Stable-dep-of: 76ed276 ("perf: sched: Fix perf crash with new is_user_task() helper") Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 42c44bd commit b45d52c

1 file changed

Lines changed: 8 additions & 10 deletions

File tree

kernel/events/callchain.c

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,21 +246,19 @@ get_perf_callchain(struct pt_regs *regs, bool kernel, bool user,
246246
if (user && !crosstask) {
247247
if (!user_mode(regs)) {
248248
if (current->flags & (PF_KTHREAD | PF_USER_WORKER))
249-
regs = NULL;
250-
else
251-
regs = task_pt_regs(current);
249+
goto exit_put;
250+
regs = task_pt_regs(current);
252251
}
253252

254-
if (regs) {
255-
if (add_mark)
256-
perf_callchain_store_context(&ctx, PERF_CONTEXT_USER);
253+
if (add_mark)
254+
perf_callchain_store_context(&ctx, PERF_CONTEXT_USER);
257255

258-
start_entry_idx = entry->nr;
259-
perf_callchain_user(&ctx, regs);
260-
fixup_uretprobe_trampoline_entries(entry, start_entry_idx);
261-
}
256+
start_entry_idx = entry->nr;
257+
perf_callchain_user(&ctx, regs);
258+
fixup_uretprobe_trampoline_entries(entry, start_entry_idx);
262259
}
263260

261+
exit_put:
264262
put_callchain_entry(rctx);
265263

266264
return entry;

0 commit comments

Comments
 (0)