From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6EFC12080F2; Mon, 3 Feb 2025 15:05:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738595130; cv=none; b=FJxHqZG7vFNjatzCLyQfGwqYfAv5yFRa6CMAjuQ5ATW/qkt5ZvPpBWaLW1BJjHiuZm7LaZj/BmaFD8H1fcDsJZgsUd2f1wm7jHzK02r3M5xhDvaLLQMWVdJPtHuQzp+iyh+bArb0x+m6BgRZgKkjX8wpuQ0sXg518nAv+Uz/4+o= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738595130; c=relaxed/simple; bh=PJ6AuVOLEIGjuqdYnsyCxOl+tSLFzCB5bAbySdg5Abc=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=m2c2roFoWG7SbVOjr3HOfr7hzmv2iMC1rfuy2GpZuYExacpM52VTz7VqBuKgbSD3l99OrCihxMXSD01OTSYWIbrZufEt0arQZfsyeKqmRYrWIykBdtPPi+jWnUaMg9d5PGlkQUemOROXnLvbSWBHTVEAlQQUqxOlKRYr+Q0wJmw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A32BC4CED2; Mon, 3 Feb 2025 15:05:29 +0000 (UTC) Date: Mon, 3 Feb 2025 10:06:03 -0500 From: Steven Rostedt To: Nikolay Kuratov Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Wen Yang , Mark Rutland , Mathieu Desnoyers , stable@vger.kernel.org Subject: Re: [PATCH] ftrace: Avoid potential division by zero in function_stat_show() Message-ID: <20250203100603.5c00df0f@gandalf.local.home> In-Reply-To: <20250131155346.1313580-1-kniv@yandex-team.ru> References: <20250131155346.1313580-1-kniv@yandex-team.ru> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-trace-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 31 Jan 2025 18:53:46 +0300 Nikolay Kuratov 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