[PATCH RFC 03/10] perf: Simplify get_perf_callchain() user logic

From: Josh Poimboeuf
Date: Wed Nov 08 2023 - 19:43:49 EST


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

Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
---
kernel/events/callchain.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
index aa5f9d11c28d..2bee8b6fda0e 100644
--- a/kernel/events/callchain.c
+++ b/kernel/events/callchain.c
@@ -202,20 +202,18 @@ 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);
}

- if (regs) {
- if (add_mark)
- perf_callchain_store_context(&ctx, PERF_CONTEXT_USER);
+ if (add_mark)
+ perf_callchain_store_context(&ctx, PERF_CONTEXT_USER);

- perf_callchain_user(&ctx, regs);
- }
+ perf_callchain_user(&ctx, regs);
}

+exit_put:
put_callchain_entry(rctx);

return entry;
--
2.41.0