From patchwork Fri Oct 20 17:23:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13430980 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 52FD9C0032E for ; Fri, 20 Oct 2023 17:23:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 032328D01CD; Fri, 20 Oct 2023 13:23:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F24808D0003; Fri, 20 Oct 2023 13:23:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D81918D01CE; Fri, 20 Oct 2023 13:23:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id B0B5D8D0003 for ; Fri, 20 Oct 2023 13:23:28 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 8116740B09 for ; Fri, 20 Oct 2023 17:23:28 +0000 (UTC) X-FDA: 81366511296.12.8AE3A37 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf22.hostedemail.com (Postfix) with ESMTP id E6566C001A for ; Fri, 20 Oct 2023 17:23:26 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=t9O9pz8w; spf=pass (imf22.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697822607; 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=NqYMoR8rx5Eey8gExHV0UoVh6y7tL0W0AcY+8h1xyrM=; b=MYC+MAb5t81xdE1Q5a1vpfQSMs0QJinUARPU+5yLhsOawzm3Iq/xvnCNp3wtEz2f40qbGc sLj/QCBhS1XM790k2YCG7mrl5t+/P5HCmipPOT8oHKvmSU0TXVAQeRwG8+GZrWz8dr/Tow rI/QcrgfjYxEdxTYCtNdfb8nYrgesSc= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=t9O9pz8w; spf=pass (imf22.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697822607; a=rsa-sha256; cv=none; b=ASyYMn1UDNA8DCcuxi6j6yh4S9ME7bA9K6HrHTyJ76kWDU/AEBOj/WXPC+dek2gX7Swxih Qr9edqICulx7+GiEwCqxI1b7QqVVSs9IZuh30bnj0Z2KAzjXwWUqWiUboXaXqLYdhGztaG 95bJNNcvbjVBq9lKDPHcX0TSAjFTgo8= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 32EC8622C9; Fri, 20 Oct 2023 17:23:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78EB3C433CA; Fri, 20 Oct 2023 17:23:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697822606; bh=GfglrsOk5qGjGnmruIH7Op0UcLOq5YxxSRcQby/wYY8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t9O9pz8w8PavHtJRAmDjnfs+pzDqdv3x4tnFpqQpQW1CJed83FYVNs8li7TGn1UA+ inQgRhjia22JOeOI1IOX/SU72zUdILTB4zjucts/LRz4x26P/X2PpEbbKFOOvzENqP dKo+VdyORmHfwzLfarroponzPoeHT8djRKCvqTMW1WtHdE0g6GJD957y+s2jxH4Urs QFIzBdNY3ViZk53G1vYRSdwpxAlC/HrSaZug/ZAIIXroUlMmTWB8Z61PD7o6nsbsBr aDrtNJE0Qkr2Z/vqvRHNvfNu3zG7BvnrJYEkW94xpTpAp0LOz/mKWk9XUqXVvox+lk GpfvMq1vSBR6w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , Jakub Acs , damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2 3/5] mm/damon/ops-common: avoid divide-by-zero during region hotness calculation Date: Fri, 20 Oct 2023 17:23:15 +0000 Message-Id: <20231020172317.64192-4-sj@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231020172317.64192-1-sj@kernel.org> References: <20231020172317.64192-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: E6566C001A X-Rspam-User: X-Stat-Signature: 37xzc4ntjbesuufo5imbh5zfeypa199h X-Rspamd-Server: rspam01 X-HE-Tag: 1697822606-371374 X-HE-Meta: U2FsdGVkX1/HhNA4aWGw2AiTyeaY6L9dx3MEaAvJMwfA7ueLLQpNShUgueSL5Y/EAT37YAQ9HIkzFBlHIcEtaUn3emUlsTmIQZUOUJu+TXrupu55AllEo1VWy46FEObgaxamSHhx9wecERAuk0DNDQsk7Wjgkx3D8fgTNv0k9H/9hvR9+7nA5UzFu6d6lo27R+ns4b/LDDpEhWxr1h0IEv041QPfqJ3Um878W7pSNm89SZldNhuhbof25R0/bR2z5IFd0N0NShov3/7AjxTmji4EDKnpJs5jWrRSaG30ypbEuVaZs2L2jxd4EF0WtaLhgdoNkhxpAtBpQOW7ph4BjBuj+hAHwCx/vKDvzDD+HT3+Wy5dKTqQC5wHTV9LuxYCzSn4aWyqG1DfOqYNM2ykHWUqBlPc2VRiTivSeGidUlytQYqhjWbspxm91VTAhIUdOTbnupWksWOgnTrcYKhdeUUtFxh6mpSTR8EGkDHey05ctFqfAUlktEVYLIv93PnIfu3mJy7cH7qIn2bm6ZoBvgR3EtNHAOZFodFs0XyF0OJJygtkjYgfVAyyn/sAZ7Frnr6Hgpm3XoyZx7bkrmpp5pgQUUv3e+hdi3ZDnK5TC4NUWXKg1DJNnq25/4yulSNlLzLzwNWqakhOcxaWzITy73nFxPo2qBgW/RBwa/WwZBpYs/SaitDM4rTdrFyZLVGmm44tiyIn4TrT+it9v6M/SCmJNyCq0m9WxjhnUKlyGsUN8PlfJlZNXjmHIOb0kz4dLDpc8BqE/rKDtBUcGpbdch56DKmlkspE7gbieIb2KkyqRRmVv47xiR5QtQSHl2d5yKcP+tgWWQnbW6KUH2Yze2Sx/V02a5nD6k+pd1KSw38Afrz1U1feAV/ORdXwF0D17FxFyykoqGFTO6KI6On0OOgqzcYU/SiSy0NjO9pZHCFJtbe3BWvy+oL8DYr7pj8yE2PUOy/4uNoEaf9Afah O/nMG5CP 6SlH58mEZ5jmSodpN7mV9R7Z+fcf77036NRRDfARijnISQcm+9PnVhuDWNaDNHRuzBOM7AmWtc/tGrQacOgHqiEpzj1HID7q+e+GzGq8p+gQGpdPEVq6VqurxPkALWNpaXgmKlq7s7ZCeVvRtvQjE/9sXgmmwlYdok22YpRKFkD6HLWjUd5wkSHdnontc08joLf7INLXnXA2j+Cir9TRd9n4YA3J09PQWm9jIgUBMfH7iZzY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000029, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: When calculating the hotness of each region for the under-quota regions prioritization, DAMON divides some values by the maximum nr_accesses. However, due to the type of the related variables, simple division-based calculation of the divisor can return zero. As a result, divide-by-zero is possible. Fix it by using damon_max_nr_accesses(), which handles the case. Reported-by: Jakub Acs Fixes: 198f0f4c58b9 ("mm/damon/vaddr,paddr: support pageout prioritization") Cc: # 5.16.x Signed-off-by: SeongJae Park --- mm/damon/ops-common.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c index ac1c3fa80f98..d25d99cb5f2b 100644 --- a/mm/damon/ops-common.c +++ b/mm/damon/ops-common.c @@ -73,7 +73,6 @@ void damon_pmdp_mkold(pmd_t *pmd, struct vm_area_struct *vma, unsigned long addr int damon_hot_score(struct damon_ctx *c, struct damon_region *r, struct damos *s) { - unsigned int max_nr_accesses; int freq_subscore; unsigned int age_in_sec; int age_in_log, age_subscore; @@ -81,8 +80,8 @@ int damon_hot_score(struct damon_ctx *c, struct damon_region *r, unsigned int age_weight = s->quota.weight_age; int hotness; - max_nr_accesses = c->attrs.aggr_interval / c->attrs.sample_interval; - freq_subscore = r->nr_accesses * DAMON_MAX_SUBSCORE / max_nr_accesses; + freq_subscore = r->nr_accesses * DAMON_MAX_SUBSCORE / + damon_max_nr_accesses(&c->attrs); age_in_sec = (unsigned long)r->age * c->attrs.aggr_interval / 1000000; for (age_in_log = 0; age_in_log < DAMON_MAX_AGE_IN_LOG && age_in_sec;