On Tue, 9 Jun 2026 00:44:23 +0000 Samuel Moelius <[email protected]> wrote:
> The ftrace-ops sample exposes nr_function_calls as a module parameter > and uses it as the divisor when printing the measured time per call. > Loading the module with nr_function_calls=0 skips the benchmark loop and > then divides the elapsed time by zero, crashing the kernel during sample > module initialization. This change is rather pointless, but whatever. > > Reject a zero call count before registering any ftrace ops. > > Assisted-by: Codex:gpt-5.5-cyber-preview > Signed-off-by: Samuel Moelius <[email protected]> > --- > samples/ftrace/ftrace-ops.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/samples/ftrace/ftrace-ops.c b/samples/ftrace/ftrace-ops.c > index 68d6685c80bd..d5adaa61484f 100644 > --- a/samples/ftrace/ftrace-ops.c > +++ b/samples/ftrace/ftrace-ops.c > @@ -190,6 +190,11 @@ static int __init ftrace_ops_sample_init(void) > tracer_irrelevant = ops_func_count; > } > > + if (!nr_function_calls) { > + pr_err("nr_function_calls must be non-zero\n"); > + return -EINVAL; No need to print that the admin did something stupid. > + } > + > pr_info("registering:\n" > " relevant ops: %u\n" > " tracee: %ps\n" In fact, I would just change the output to be: pr_info("Attempted %u calls to %ps in %lluns (%lluns / call)\n", nr_function_calls, tracee_relevant, period, nr_function_calls ? div_u64(period, nr_function_calls) : -1LL); and have garbage in, garbage out. -- Steve
