On Fri, 31 Jan 2025 18:53:46 +0300 Nikolay Kuratov <kniv@xxxxxxxxxxxxxx> wrote: > --- a/kernel/trace/ftrace.c > +++ b/kernel/trace/ftrace.c > @@ -570,12 +570,12 @@ static int function_stat_show(struct seq_file *m, void *v) > stddev = rec->counter * rec->time_squared - > rec->time * rec->time; > > + stddev = div64_ul(stddev, rec->counter * (rec->counter - 1)); > /* > * Divide only 1000 for ns^2 -> us^2 conversion. > * trace_print_graph_duration will divide 1000 again. > */ > - stddev = div64_ul(stddev, > - rec->counter * (rec->counter - 1) * 1000); > + stddev = div64_ul(stddev, 1000); > } > Why make it more complex than it needs to be? We can simply have: if (rec->counter <= 1) { stddev = 0; } else { unsigned long counter = rec->counter * (rec->counter - 1) * 1000; stddev = rec->counter * rec->time_squared - rec->time * rec->time; /* Check for overflow */ stddev = counter > rec->counter ? div64_ul(stddev, counter) : 0; } And be done with it. I'll make the change and give you a "Reported-by". Thanks, -- Steve