Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

perf: Remove get_perf_callchain() init_nr argument

The 'init_nr' argument has double duty: it's used to initialize both the
number of contexts and the number of stack entries. That's confusing
and the callers always pass zero anyway. Hard code the zero.

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>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/r/20250820180428.259565081@kernel.org

authored by

Josh Poimboeuf and committed by
Peter Zijlstra
e649bcda f49e1be1

+10 -10
+1 -1
include/linux/perf_event.h
··· 1719 1719 extern void perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs); 1720 1720 extern void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs); 1721 1721 extern struct perf_callchain_entry * 1722 - get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user, 1722 + get_perf_callchain(struct pt_regs *regs, bool kernel, bool user, 1723 1723 u32 max_stack, bool crosstask, bool add_mark); 1724 1724 extern int get_callchain_buffers(int max_stack); 1725 1725 extern void put_callchain_buffers(void);
+2 -2
kernel/bpf/stackmap.c
··· 314 314 if (max_depth > sysctl_perf_event_max_stack) 315 315 max_depth = sysctl_perf_event_max_stack; 316 316 317 - trace = get_perf_callchain(regs, 0, kernel, user, max_depth, 317 + trace = get_perf_callchain(regs, kernel, user, max_depth, 318 318 false, false); 319 319 320 320 if (unlikely(!trace)) ··· 451 451 else if (kernel && task) 452 452 trace = get_callchain_entry_for_task(task, max_depth); 453 453 else 454 - trace = get_perf_callchain(regs, 0, kernel, user, max_depth, 454 + trace = get_perf_callchain(regs, kernel, user, max_depth, 455 455 crosstask, false); 456 456 457 457 if (unlikely(!trace) || trace->nr < skip) {
+6 -6
kernel/events/callchain.c
··· 217 217 } 218 218 219 219 struct perf_callchain_entry * 220 - get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool user, 220 + get_perf_callchain(struct pt_regs *regs, bool kernel, bool user, 221 221 u32 max_stack, bool crosstask, bool add_mark) 222 222 { 223 223 struct perf_callchain_entry *entry; ··· 228 228 if (!entry) 229 229 return NULL; 230 230 231 - ctx.entry = entry; 232 - ctx.max_stack = max_stack; 233 - ctx.nr = entry->nr = init_nr; 234 - ctx.contexts = 0; 235 - ctx.contexts_maxed = false; 231 + ctx.entry = entry; 232 + ctx.max_stack = max_stack; 233 + ctx.nr = entry->nr = 0; 234 + ctx.contexts = 0; 235 + ctx.contexts_maxed = false; 236 236 237 237 if (kernel && !user_mode(regs)) { 238 238 if (add_mark)
+1 -1
kernel/events/core.c
··· 8210 8210 if (!kernel && !user) 8211 8211 return &__empty_callchain; 8212 8212 8213 - callchain = get_perf_callchain(regs, 0, kernel, user, 8213 + callchain = get_perf_callchain(regs, kernel, user, 8214 8214 max_stack, crosstask, true); 8215 8215 return callchain ?: &__empty_callchain; 8216 8216 }