From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87C31C83038 for ; Tue, 1 Jul 2025 17:00:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 277806B00AE; Tue, 1 Jul 2025 13:00:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 227876B00B0; Tue, 1 Jul 2025 13:00:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 116AC6B00B1; Tue, 1 Jul 2025 13:00:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id F13A06B00AE for ; Tue, 1 Jul 2025 13:00:12 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 89966C0544 for ; Tue, 1 Jul 2025 17:00:12 +0000 (UTC) X-FDA: 83616308664.25.794F237 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf03.hostedemail.com (Postfix) with ESMTP id A13F62000B for ; Tue, 1 Jul 2025 17:00:10 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=G9BFkX9F; spf=pass (imf03.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751389210; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=YmkjExZ1AfPtFIL3YSAA4Fit61B4srmbZhKwOLgMPgk=; b=p9brtJnam3n2Kb5HBnl0B8nA6+kzWon4ths1ao02Ezdm383I4BNkIorxeXyx2vyB9+mIij KGEcnfZxoVUtHR4pRYDHXsK3NYVtITk6rOW2J7FQx7e+hqiq7+YVMMJqj1bkQItKYb4BG6 gsCKNQSfrZkj/cgj4nDFb3dFJI9PRmE= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=G9BFkX9F; spf=pass (imf03.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751389210; a=rsa-sha256; cv=none; b=hMRE65qDxX1j6rW9n77zbg3zMAjd5dmHZal6Zf0orV8a/zrljo9r68107ChnOvzmPjU0si WeN2WhKZDlECTL18ZMaqlx6kw581LEdc5zXczw5vtwaCtTPVI5mlgYNv/l0v6mdhLB8Imf 9PjqTuOaUAFBA92pANV7T0a4m5cTyJ0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 83AB65C572E; Tue, 1 Jul 2025 17:00:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 06D6EC4CEEF; Tue, 1 Jul 2025 17:00:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751389209; bh=D/dzfuWq5fU7kfRdTPL5faPwKJ+ftpTxGZLbdwu0dCE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G9BFkX9Fv2wk+6CY5wyKNfI6L/qK6mrvhiDkLlNFlTPQm1DpEc1ca+eGWoBkHMp2I +7OmE+nsrTH3+YoFQjX8CurBROFXhrsaOSnEr45cJhMVsDkzrM93O32DCg/MxYxx3O UuQZc3PTTGXWrRYwrn9q3AZPBKQWMCKSvGpZm5PaI2+epMVHW3i/aedQx+0k/YHHXU /lGQTabnLlGnlK3vTtF5iYZHyE5lb7ne4CFthDFMEJ++Ub//+YHAwHZPHYT1Xz9Vzw eOUKr7mAvXLN+4sSmSJFHzKUfFvaSL3s66q4QRf8X78vTvZlk4iJeP1uy69e8927N5 Gx7JtawPl+RFg== From: SeongJae Park To: Honggyu Kim Cc: SeongJae Park , damon@lists.linux.dev, Andrew Morton , linux-mm@kvack.org, kernel_team@skhynix.com, Yunjeong Mun Subject: Re: [PATCH v2 4/4] mm/damon: fix divide by zero in damon_get_intervals_score() Date: Tue, 1 Jul 2025 10:00:06 -0700 Message-Id: <20250701170006.53864-1-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250701081927.1873-5-honggyu.kim@sk.com> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: A13F62000B X-Stat-Signature: 1ckxheahqe86hnw56dizqdyyhbt8ojwh X-HE-Tag: 1751389210-17209 X-HE-Meta: U2FsdGVkX1++WsBuMNAoH0lqDfUPu4pS978phOxkTrmAo0aUlHSLAlq1kLzSS4XhdYaeRQSpejBupFzAk6gz/NUeQfE9e8eqjXk4NbKcUuep9rCo7br1E28xCfvgmnDDMOVfFbXj8Wf6CvQcoBomH4jAgxCAyLugtWX4KtHHks2mYYqTB4+aeQfMPVBfNlt8qupQsYrA2tap5H/7XkBLdY6kIurR7+gBWXmU9VhOZx98IdgzBhjaJyMDpITklnAxcFMh4isUr2wRQ+EzNkIppAurWvhKqkMnqFwyxnKjee5m46lXJvt5QRsRF1DA6xjm9dzlFBmhORGqrDMjsQCKcN9L2IGUnoZyaF+RU5iDwYzfs3IQR6ub3i6Ep7URhLdxDO+SURfkQ6Cl5CL5+IJG+NmQV+pBk/RjVK/elLEOvdZh98w2fNvdsw+ed7KkkdqMD0LPXjQvp9rkAdL0n9+vfEkeWMn5JGjVxVsP6mEfpishyjMwV9EQJWCdKGTceJ6OekbSAQpTTe19W/bnUI06gXknmrhu3yOzIIY6hEEvaN+DOdLtb2BE7GFpGxmqdVbXpLpZM9hDNZsvWLI0GnnyHnGziwaMNe43XWFhYmAlTP/Z05I44iRFVR58aO6itvi7LIsMzqtw6OJWtmS20ukgTsufTt0fauIekVN4QPy0gGR/VQTgZ1ZoNz+IZcfjoVZq9JArdl6brtglAD1PdPowF752Oyc7B6duzwqpGNJcai8gnMsgj6bv2krTD5+rAVZpYdGOWd9rmgZFAFyn1hea1DXFGuDkaCR3iAbB8iLJVs3Ac6yXhHM3LZmcw7o/Dk4vy87J33KljcnDQjd+5BHYDTdvhLjJQD6pADQSbQDdJaoMuTf1OaN5Y/dEv/KW3zDZKcY3A+xiGZohnk3JX+3r2uKKzlDw8Gh80Tuj80PMSFAFGS42Z9RCLX1Em8mc4sNogdGX3kqakXXmrExjeud fvAhKFgt QYnmnfIortj3lcjGpYU3BxzfpkomgVe0UgQQzYL+hWh5Kgh9EDP+M+aMUEd5/hoxQjrKWVLZZbEUXXF+eQ/zz1QnICgGrZ+XAzgnKUyOVdqhdApRM3HzFpcrmQAD2I08hMZcvTo089XR/5iy/m+iVNdiU+Qrc+JyPFilfaSJUiPqbsF5h3eWyyJD9+7J3ApG0J1PE19veIaEWIY5kqNZgn7tQuIXBqX7+ScwXRHAL+BiFhov02RAijPNPHMf9w3Yd7e6iVx/BTTQaJhNHMdvWqpqDocnilgRuCr72N9L5i2JMM1AVrtcRUOQEl6g9oSbrUNHGvxsDu05CwCWc5LZTCbh/DNt3IK/TxZ2+ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi Honggyu, On Tue, 1 Jul 2025 17:19:26 +0900 Honggyu Kim wrote: > The current implementation allows having zero size regions with no > special reasons, but damon_get_intervals_score() gets crashed by divide > by zero when the region size is zero. > > [ 29.403950] Oops: divide error: 0000 [#1] SMP NOPTI > > This patch fixes the bug, but does not disallow zero size regions to > keep the backward compatibility since disallowing zero size regions > might be a breaking change for some users. > > Fixes: f04b0fedbe71 ("mm/damon/core: implement intervals auto-tuning") > Signed-off-by: Honggyu Kim > Cc: Yunjeong Mun > --- > mm/damon/core.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mm/damon/core.c b/mm/damon/core.c > index b217e0120e09..e274a4d958d6 100644 > --- a/mm/damon/core.c > +++ b/mm/damon/core.c > @@ -1448,7 +1448,10 @@ static unsigned long damon_get_intervals_score(struct damon_ctx *c) > access_events += sz_region * r->nr_accesses; > } > } > - target_access_events = max_access_events * goal_bp / 10000; > + if (likely(max_access_events) > 0) This makes checkpatch.pl complaints as below: WARNING: Using likely should generally have parentheses around the comparison #39: FILE: mm/damon/core.c:1451: + if (likely(max_access_events) > 0) This is not performance critical part, so I think we can simply drop likely(). > + target_access_events = max_access_events * goal_bp / 10000; > + else > + target_access_events = 1; But, target_access_events could still be zero if goal_bp is zero or max_access_events * goal_bp is less thatn 10000? I'd like to simply do the target_access_events calculation as is, and set target_access_events as 1, if it is zero. Since this is not a performance critical path, I think that's ok. Also, in the previous version, we discussed the reproduction step requires sample modules. But seems we can also reproduce this with the official DAMON sysfs ABI by setting the intervals goal zero, and I just confirmed that. Let's Cc stable@. > return access_events * 10000 / target_access_events; > } > > -- > 2.34.1 Thanks, SJ