From patchwork Fri Oct 20 17:23:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13430978 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 DD948C00A98 for ; Fri, 20 Oct 2023 17:23:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 253668D01CB; Fri, 20 Oct 2023 13:23:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1DBFF8D0003; Fri, 20 Oct 2023 13:23:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0A4408D01CB; Fri, 20 Oct 2023 13:23:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id ED2D88D0003 for ; Fri, 20 Oct 2023 13:23:26 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C468512111B for ; Fri, 20 Oct 2023 17:23:26 +0000 (UTC) X-FDA: 81366511212.02.E035F75 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf12.hostedemail.com (Postfix) with ESMTP id F35A940006 for ; Fri, 20 Oct 2023 17:23:24 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=lk1FqpYB; spf=pass (imf12.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 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=1697822605; 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=9HtPxx/ZTHCGoGxSifwetWG6HfXF9zUo9CxFU0ta5d0=; b=GnXsY7Qk7+/mgpAoCGH+bN/+pypFmAQwxWqTJSvJf19EDA7KQSmE/JQxEVLwWfDSyo0Z4m +iN3iVlwC+COWATfcqI0lbpT9oOKvA2fRJt+z1xDORTFp9+JeDgQbj6B0+orYtqVaYxuYI zSAIp2jDUrCZcLw5oDZGZqTn8Yrhctw= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=lk1FqpYB; spf=pass (imf12.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 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=1697822605; a=rsa-sha256; cv=none; b=1uCe/W60rTqwgygqG4Fp7JBnNN0TpeHlZpsx1W01snkuSOB82hfAo6etNBCrr1hhEFS2Ty zAT3htINbhj3PL5X0zptYkpAd9rIUvdluO9072lj6dU3+MMCq+n50NEZdTZXu8CyKjIi5E KrJrtgkuVhIqz/2etiY/9do1nAuu9gU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by ams.source.kernel.org (Postfix) with ESMTP id 7A70DB83317; Fri, 20 Oct 2023 17:23:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5437EC433C8; Fri, 20 Oct 2023 17:23:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697822602; bh=Rn9BHGv/kMTRWnOOhqqlR6v0d9H0u3tnTjx9VDJfJCU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lk1FqpYByQMbf59yh0U8YLgrRJ43zTSnfY5ztYkNwJxmOlrcYYzGMmulb64GWPd27 WDnr/ul64sOEPEBEX/FpDD7+OZxQ8uoE0Z3aJRmivH6ITsRSScdktkyKelkVw9EWzz /YvbiC+RTKd5QA6LA86beLXArsehV6tLDXXWVWr1ZBYHK8TVlWJvgdQu8eDE1kLNFp Y09FFWInvtPhlAqZAV2wcN8olPgLL4o0Xj8ujhKXQCa21H/maEShe4WpqSSEIrcXg/ zChMs5xWAxN9PsyWly2J4u8y1YAbo07mJij27Eu/Tj0CAYBsIe7S6DVGlYjXB2W8SE DJbKUg/VjiXzA== 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 1/5] mm/damon: implement a function for max nr_accesses safe calculation Date: Fri, 20 Oct 2023 17:23:13 +0000 Message-Id: <20231020172317.64192-2-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: F35A940006 X-Rspam-User: X-Stat-Signature: ej93m3e6c6b9jqaj6du165ipm1r6yryn X-Rspamd-Server: rspam01 X-HE-Tag: 1697822604-220119 X-HE-Meta: U2FsdGVkX18+6e4z+kseolKsG++PxZvgTt913WJhBoWYCjA9gHpXJRJdKXKbeIIk83Xp6/MSc3RJok2nL/oY+IP333Kl59WjDmJfh8380ulGtuYrk7GWI13gnjL/HmMjNsSzklIcTQ5PyqV1NEQwQExttlfvfnlZeAvClIn4z6Nt+RSDCKYNZq7ZkX1jN9bO0/OkWPQ9uYPu6GvwIUhjypJeKiOZ9boRax3OJvIUXA+xULayUPTdGkI7RxbsOks2JIn+R1Tf0StKY43PHpZ0allXVbDhJJAPagmg+slAKlgSc29PUWjm8zO0t0AzI5lEhQ6vxbAv+gHg7CBwrQbiQnNZwJ4IL6g3+8X44TbO+bBB/+j+HqWytwkAJuzL79RVW6PiIXRuTgrvhczVh9F17tZCQScbrzXnrA4Ghu+NWJFSuTQpePcUaxbzQ05hiH8pxnxikCfyrLpC1ZiOwm480q8/+5o07XmpZ+gRkEXWZQbub9azfLFWiXBc8X3P2H7iSc8QsZPO3qrj2CGWs9G+B7wuJrbvBU15Kr5NZSIdjfP2CQHv3C75Vx5ntz7XD2wWmI+Wublp4M3vB0DTSe6X/BOElFFeAR4yN9M3dJmLk2+0HbOb/sTlA0mPPkx4ra5MxsK7/kWMgCKfJO9js1FDjbcpoa86Gq2V86C2B1luvtb7X4PemiNS7oUPVEMlJckAYW9LDbNVcLaK4pDxSG0+T9eCBNFSqO4lB2kKXiOg8YcJCqH9nqHPXPDG0svQLMAzeQcPiGNoUTy8RBqNweNDqA5CBTrCw4FtaQCOD4DdjYP0Wz7NLPPYjOLXHfzHo73VPZ7X9pc4gUlOaPuiI6g73WLl5FSUTpWNpa8P7sSh+0pXlLz5pJUFbQroBtZyBbvuPWokYEaV+/+hP2m9AsIPCt+jF7KdWDbSiTiiy2zJ2UYr6zMbnM6fvLuLm5eQnkn1QtacW1+AFW3VDouurkf tXCd0L4Q Od/zzG32cHWfc6asXSGh/Zi2p3WCMB1oE8mdhDq+HqHrv8eJSyofzvpB7wbljk8ImEDtHO5Q2XOPqQFmtfEoqFLK/aaKJ4Cj8Jsn1F8cYDZqP+ZVvdgFi5kuvVoAtphuRddK+gI5OGDEnBgsP3LKf41g+7D86KdmGHxIF2CB4auBuW2IDUCMO2DQ/5+E0E5pnM+2VD+S1iFcVjWff/aTQbDq5C3aI6dQgJatelHoM1ttvZO9T9ZuVeyEFCGsL3p2TIS8y20zsb3Eq9HsRFaBj2DBZrzrg4lWPySGO X-Bogosity: Ham, tests=bogofilter, spamicity=0.000005, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The maximum nr_accesses of given DAMON context can be calculated by dividing the aggregation interval by the sampling interval. Some logics in DAMON uses the maximum nr_accesses as a divisor. Hence, the value shouldn't be zero. Such case is avoided since DAMON avoids setting the agregation interval as samller than the sampling interval. However, since nr_accesses is unsigned int while the intervals are unsigned long, the maximum nr_accesses could be zero while casting. Implement a function that handles the corner case. Note that this commit is not fixing the real issue since this is only introducing the safe function that will replaces the problematic divisions. The replacements will be made by followup commits, to make backporting on stable series easier. Reported-by: Jakub Acs Fixes: 198f0f4c58b9 ("mm/damon/vaddr,paddr: support pageout prioritization") Cc: # 5.16.x Signed-off-by: SeongJae Park --- include/linux/damon.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index 27b995c22497..ab2f17d9926b 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -681,6 +681,13 @@ static inline bool damon_target_has_pid(const struct damon_ctx *ctx) return ctx->ops.id == DAMON_OPS_VADDR || ctx->ops.id == DAMON_OPS_FVADDR; } +static inline unsigned int damon_max_nr_accesses(const struct damon_attrs *attrs) +{ + /* {aggr,sample}_interval are unsigned long, hence could overflow */ + return min(attrs->aggr_interval / attrs->sample_interval, + (unsigned long)UINT_MAX); +} + int damon_start(struct damon_ctx **ctxs, int nr_ctxs, bool exclusive); int damon_stop(struct damon_ctx **ctxs, int nr_ctxs); From patchwork Fri Oct 20 17:23:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13430979 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 42CE6C001DF for ; Fri, 20 Oct 2023 17:23:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA6048D01CC; Fri, 20 Oct 2023 13:23:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B5EA38D01CD; 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 9F2B18D01CC; Fri, 20 Oct 2023 13:23:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 865188D0003 for ; Fri, 20 Oct 2023 13:23:28 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 650A614122D for ; Fri, 20 Oct 2023 17:23:28 +0000 (UTC) X-FDA: 81366511296.16.C5FE111 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf07.hostedemail.com (Postfix) with ESMTP id C2AB94000A for ; Fri, 20 Oct 2023 17:23:26 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=tibiLrMD; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697822606; 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=gHG3JngsXmc6BwWUvB8MOvbIsEavnDuQdNxca10fgBw=; b=MQtPnRbeH7yWtFokmrqrQ8bmwnDt7cn76y2SvBGohzmWN78C2hHkiXVNC2jJinRjjxSxRr 1NdokeCnPxHg4QLxZMHm8tzcNLxKRqHXxtx139dEO0GQX+I1ct15WImglprskzEy4k6LLp heUhP/tcgbA9OPLWuVfRZVemaOuNQ20= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=tibiLrMD; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf07.hostedemail.com: domain of sj@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697822606; a=rsa-sha256; cv=none; b=BSIcz0uSPVKGWiFELp7qyJkCoEXV0jpeKq9PiHAIjAFQ15uCU8ryHQ4TE0CLirvGZecg3W gbC27T3PNKxv8FAOlhe4NKwAg2amDSzizm4pZ3otQzDGhNvRdsU0VXHspZHXhHFF4y+HMO itDs/dvSXAyTEpYykNQatZFBWoR93O0= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id DCCE7622C6; Fri, 20 Oct 2023 17:23:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1487BC433C7; Fri, 20 Oct 2023 17:23:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697822604; bh=OyGTPA4KF2+eYVdgVawdmd836X4nvWEWuxM0J39C7SY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tibiLrMDEW1tJPRD83m27OwLCd/3DldWtN6HSY+GRNl2CN2/lGFqdA8TQQ727MbK1 RXghEBiUVpRYW2wWEiF2yiDTw4Mz9aUN/5jKYr74Dv/eki3xYKDE93RdSo9tqctrMh CQYh7C/JT6Pd/m/Lx4jnpiYh3AL+5ZGjJ0Dgwm8qeCTjxEkZ//jSvkKcBywnn8qJsk xIov6mao/lOfYVmBmQThgDh3lKi7Zq5LeWX+G0A45G30D5VHCYpRwm1A1Anhin9GeL YqhXZxPUTshcAwA2xiNxXzGXvG7BgM88reL/1z9rKcS6B3dNgRns0LUK1vsgdWaqlG PvGSzwlgnkpAg== 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 2/5] mm/damon/core: avoid divide-by-zero during monitoring results update Date: Fri, 20 Oct 2023 17:23:14 +0000 Message-Id: <20231020172317.64192-3-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-Rspam-User: X-Stat-Signature: k3axh8ou1991timmgxyrt8z7af4haiba X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: C2AB94000A X-HE-Tag: 1697822606-586157 X-HE-Meta: U2FsdGVkX1//Ddotja3OwgFcvjTdz/DV+yTcBvOK1hnOoCM9VyS4iG2lgnyh6FvfuxRG/INo5VqbW8MfL4vXuVLhDtAZEMLREGZI68T2+hFu1lXORGAI1yWtPn38R0231ZqalUVHDX3GtiovEJFy1FqkSrDE0xlSJsKJn3Ia7F6Hwlvy1DNNBqulfA434R4gEGVZ7kLglGpb8kRb+cU2VEMy9f0zQ7YIsKG2RFIvF/VT0gJ7QK9GGLlE0J+dnGjkIFyRao7bug1eBGstgKhdd141o7T6ftYciTG9Ims9rNKVOcjin2rOCDAiGoDNVBnzqTcoINhD+DBIVGAfrPH8kLAmnGS15nVX20LzhID+dmD5YPbH08LI1ewFYdXUwObqguyoREF/jEY1+h5odBaJsLFhxUG/fXU8JAfAMzpVIhM5Dji+AyhdvDSSs2Uk2d8wMpDF6rGhO4/MaLXBn8Ap03hYcjZzJ0pEHDxFwDQtNJwWuBI4mrcwLE3BrLPGwXAzm6u0ZjBXc7F0ZM8puwgPOnptAXkbE4tECfHjxuS2I/bOa2EJ08UwmdF3/9U/0K/qRxoxGwFMuxbqyrmXXoXzDkOMkVDPr9iReU3e7XfNaEHMb3A0/CmC0GULDb0114wjOfrCt71XOEnHAkLB8miJvOoVqpiKaUpHtwrOMKFxyDZbo4JwcocfpTWGDQ50Hnm/PWTZqXTYyQQN4zLqKv5pze2/7n+kUDn2MDCGKgHvMjXD7jpj7zQujOUnSa6rqLv/uaQyOAcbm+BYU9rQsJkF87+aegl3/aNpTrFlYA2bJ4EEPRH3BccvFrUbzVCb3KGRt8iKPLJcYXOgibKJpgfHhP3AomVlC2Q0HNxw2Vz7QMT8fHswdjP/PHvSKVrTXhAzfjZ/tIWVHlOxvxMOYNduUTX07JIXiOHqTgXRU8aN4WVMyxtJUImf22SDVOLjEzZVn18N0cxrxgL6dfuqflh pwutdcOJ S7H6XPMIF/76Ud6e6RvtYidfbfFU3lnxssQiNgsmekjJCe8xv28Lz7YmnhHnZQjGMa96qyNzzb6TayTnyCmIYOtxeU4GgfVDgQ7BDBNkK7QQAT7oOPFyYjFmfPTheCj5gdPwPxNnXiRL16ljkNz/0B5pH2GgfhBXwKivOKnIR2j4Xko04JDrxh3lYH8sRE26G6E29+ngRJmlvIJk3DiWbPMimPza5S3qEnNFj7J5FSGOahBE= 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: When monitoring attributes are changed, DAMON updates access rate of the monitoring results accordingly. For that, it 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: 2f5bef5a590b ("mm/damon/core: update monitoring results for new monitoring attributes") Cc: # 6.3.x Signed-off-by: SeongJae Park --- mm/damon/core.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 9f4f7c378cf3..e194c8075235 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -500,20 +500,14 @@ static unsigned int damon_age_for_new_attrs(unsigned int age, static unsigned int damon_accesses_bp_to_nr_accesses( unsigned int accesses_bp, struct damon_attrs *attrs) { - unsigned int max_nr_accesses = - attrs->aggr_interval / attrs->sample_interval; - - return accesses_bp * max_nr_accesses / 10000; + return accesses_bp * damon_max_nr_accesses(attrs) / 10000; } /* convert nr_accesses to access ratio in bp (per 10,000) */ static unsigned int damon_nr_accesses_to_accesses_bp( unsigned int nr_accesses, struct damon_attrs *attrs) { - unsigned int max_nr_accesses = - attrs->aggr_interval / attrs->sample_interval; - - return nr_accesses * 10000 / max_nr_accesses; + return nr_accesses * 10000 / damon_max_nr_accesses(attrs); } static unsigned int damon_nr_accesses_for_new_attrs(unsigned int nr_accesses, 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; From patchwork Fri Oct 20 17:23:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13430982 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 4A475C00A98 for ; Fri, 20 Oct 2023 17:23:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE0C28D01D0; Fri, 20 Oct 2023 13:23:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A995D8D0003; Fri, 20 Oct 2023 13:23:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 909718D01D0; Fri, 20 Oct 2023 13:23:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7B5B08D0003 for ; Fri, 20 Oct 2023 13:23:37 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 4A564C110E for ; Fri, 20 Oct 2023 17:23:37 +0000 (UTC) X-FDA: 81366511674.11.FA8D99C Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf21.hostedemail.com (Postfix) with ESMTP id AB6F51C0022 for ; Fri, 20 Oct 2023 17:23:33 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=jHtmFc93; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf21.hostedemail.com: domain of sj@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697822614; 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=HLqUQe00dMgNr2OfwqUnWCJdJQVpHibxoVFBKdDb3FE=; b=xmKqNwx124jlQZILs/EUj/iZdheJEfrj4UqgIYQ4/hVwAM+4Ws4VPonetAjmr7KyObFfJi BIHiJaM9F3MvrXk2okW7X5SFnb0F99vJIHrIYX9PHQgges+LG+J+tKHXM/UjupCjRbzPFA n3watVQrQfy06Nzc56w609mWgdKMYSo= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=jHtmFc93; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf21.hostedemail.com: domain of sj@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697822614; a=rsa-sha256; cv=none; b=AVYcqoR4YkPBob/a/zYo0jTLdxrF9Ta6zYpmv/ewcnws40vhxiXekYXMQjbeUzO6PH1mqV J25wtLv6Aj1Se10ZBbDAkvLzfE0AoTZSYH+BBblQPNQLEA89n4uFGYiX+hbXkgmKxz97bR KIF5YcL4S/XTu3RXmxImLJzCsSWCXMc= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 26DA8CE3AD7; Fri, 20 Oct 2023 17:23:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E62BEC433CB; Fri, 20 Oct 2023 17:23:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697822607; bh=6lmYsv8XJqW/eM+lXLzhU7HxZ5CdX1w8lmt0qOdrzr8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jHtmFc93b57yZn/bDpAh7gBhcfHbj20IeY+fuu4053yIw8MoFaaDnmQ0MsrNV8IEo X1ZOjlEl1Kmq4ngCLAeoC0621PhULQJp8lkT0Kw5Kc+APiSyMONoLooY1MQILhnSDk 1W2Lt47fEK5O7FwRtUdgtoRCWawLtS8RrNJAvD6jDE3sWD3ipUbb1AYqpnahNa2Anz tLyFDzmIrQ4k/2QD4TQMawE617DS+D+Cktc6QL7UdhoZ140dK+/y11tdkGzEEIlkn7 D8LoBKqBNUcwmM8as1ufxtbE2HDuPWHtSNOJh3KGLxL+1+9gAKAdCjl0b2J+e8c26P Q5JlslM9OsQqQ== 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 4/5] mm/damon/lru_sort: avoid divide-by-zero in hot threshold calculation Date: Fri, 20 Oct 2023 17:23:16 +0000 Message-Id: <20231020172317.64192-5-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: AB6F51C0022 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: cnrpzb7d67auadd8pq61fei9sfqizwj6 X-HE-Tag: 1697822613-577588 X-HE-Meta: U2FsdGVkX1+VnkulzYI2OAcSx6uwHx1sRmI51lzHXj9Hk2ElARpUpO9PLq4y7wAmMOd66b8nbJqgDbfFRgO4gJvZn1rpYkKkNH0Q0h8UgtM67OJG5J0jpN7hnRueuPtDTKHWHSYvZhE/STUfw2OYGP2LYxvaRF7FJcOjw2IK14UrL4rK4ZDEGsFlf9QBkL9S/Y2X9FSJj8O9pyHfU4H+rmjhB0PPo3L9DXnTenyvwKWvUhQrlYkqk2aa+inorsVomZBGV2ZQGFBLyTn+4wvTL+XkJRldxEmqKcOLdtaY9LczDR009zPl9H1YP+DfQiIn4UlBMm/jELD8Yudkvg7rqKX/Z9ycG2Qzpd/mccRsRpyiGfXZuliJ3Z5SYe405ac/NrT0/guT10PRNSSAQfBnc8Rb57sU7ibxwARJIGCf5LpxnKh1fZAnqWiSbB+ul83BY1mSsQaEzKHbMQPz0XSNKJnH/Aa5tAr2DP55GYLjIcm4yFdWfVVVnbyUDI8pnTUiHkamjgvtKpNPnsInAoqzO2d9fv2ZhZzwgLxYdZUWMGU5Jp+yijAKEwVFzklMltbwTja5ynKj5Z5X927i5F/X7G5xhgODOYZ84JHUInIVm5tYejY9jXwfceIkbOwkdImKal329lT0P01F5jykn3keXqKtLFewSxBUvygTvFXO8Tf3nKupdNt936M43wA0Y00dcfpSxLmWD0be8uMPq+a2q2UrCuPhodOX1pCyWWgoASaQyaVYfYRjkTaWNGOSGJyFt2VndutqsAcR/UOPaVF/5zEV24ZlVFswAaNn6uN3/o0nrD6c7wFE1WkUpDCXCenNWhAYpKR/Vmg0CzbLDiQC9O8Sms1VCYttfr/enLmNVBDLwIP5L4gS8l3cOMsQ7Y2VfmoM1mm/OU5YtTlEHo2RmiSHq0FiknGfJIzZlNaqtVSon523uFSYqKBCN2iThDrA4/G3Sz0QusLQmAHWeAb XRwWhHes uiTvp3deFGaZ8AJJo2K88l0sewkMoLN1Put4QGEMjUZQOIElbbzlG6UwtuLimDRJ+BbtHqePvuEXz+BffcGmlaqZWp5XDniM8N27hHY7/52MYt6actZzS8cvh8xhAy/AoVyBAVG/p4i4gYtMAPl2LX4xOeqFfVYSEePT0HnIQlFWfw8YNdnATvA19CtKVJKEUG6d4rcs6wZxdNOTiwDC7bmrz+v1zKWgEhhlSkBgTjzLKp60xFJseArStcp7GJ/NQ/+2WZzbybLvsI9C7B3pg9Wbegg== 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: When calculating the hotness threshold for lru_prio scheme of DAMON_LRU_SORT, the module 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: 40e983cca927 ("mm/damon: introduce DAMON-based LRU-lists Sorting") Cc: # 6.0.x Signed-off-by: SeongJae Park --- mm/damon/lru_sort.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mm/damon/lru_sort.c b/mm/damon/lru_sort.c index 3ecdcc029443..f2e5f9431892 100644 --- a/mm/damon/lru_sort.c +++ b/mm/damon/lru_sort.c @@ -195,9 +195,7 @@ static int damon_lru_sort_apply_parameters(void) if (err) return err; - /* aggr_interval / sample_interval is the maximum nr_accesses */ - hot_thres = damon_lru_sort_mon_attrs.aggr_interval / - damon_lru_sort_mon_attrs.sample_interval * + hot_thres = damon_max_nr_accesses(&damon_lru_sort_mon_attrs) * hot_thres_access_freq / 1000; scheme = damon_lru_sort_new_hot_scheme(hot_thres); if (!scheme) From patchwork Fri Oct 20 17:23:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13430981 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 9C227CDB474 for ; Fri, 20 Oct 2023 17:23:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DC86C8D01CF; Fri, 20 Oct 2023 13:23:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D276F8D0003; Fri, 20 Oct 2023 13:23:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B2CCD8D01CF; Fri, 20 Oct 2023 13:23:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 9F0768D0003 for ; Fri, 20 Oct 2023 13:23:32 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 74817120867 for ; Fri, 20 Oct 2023 17:23:32 +0000 (UTC) X-FDA: 81366511464.01.768AD4D Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by imf30.hostedemail.com (Postfix) with ESMTP id BF42C80002 for ; Fri, 20 Oct 2023 17:23:30 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=R2Uo8d1d; spf=pass (imf30.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 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=1697822610; 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=fTlqNdzbFdc9R72dERn2BM6lGJw+6/d2x02vllJOm3c=; b=5q8yqz+wNTFdRxYp0iY9W2nGC9q8ChQOmL8F/9U7wTAHOVKuFjv+wed3+jKvfNXgWbj0s/ sv2OhQwpf6AtXPGeo32bp7VzpHShZr5PCSZG7MKQTtRzQEZVWulxC4L6TRlbT0Fk4mA4Wf WoBeKcY9bZ6yqe9yf/WiE/mnsNyVcu0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697822610; a=rsa-sha256; cv=none; b=gKuYbQFSj3ysQj77rHBoeEyxSu6MmQwIOlZFYkpufre2EIpPl7gfIu7C38KUHYEBxq0Oo+ dh/SeXNYLDw/H8kNvTHwgs41+u+PjsZ8vswGZIO6uLOBRAP+lgDkvc9Md1rGEAxdAncsLL nHTrwe+hDpTOHD4SK1iysL/C47z1yWY= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=R2Uo8d1d; spf=pass (imf30.hostedemail.com: domain of sj@kernel.org designates 145.40.68.75 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by ams.source.kernel.org (Postfix) with ESMTP id 6EEB4B83313; Fri, 20 Oct 2023 17:23:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 744D4C433C9; Fri, 20 Oct 2023 17:23:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697822608; bh=A7qQGX2x61HuX9WngSjrxy/tMdxThwG7cO+vlCnt/oI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R2Uo8d1dOObRxHmQhvT+GaBkbeipS3EDjJHzlrqnXCOqDtzreW0cAfNfLBKnVc8lc lCprkGxeggXj98oVNf/z2gNIDicTFnmBoUSvD8XtZKmqF8BGuA1vA5ufLZh4OjhNfY xc9+xQc4jg/efEPeUXH3jErpnXwLGo738cZmOScqm/dYnZfejUTXwGj+LjFdURrRTu pAbE3gO8gyfQ/zOq8DRIK0aUFpnm+GIxyJPhGLoPRDPqkfz3HJWzOyFpKlnff7OBsQ 1he8H2Uc1OZyM9peBjSqaiWiqy51/HuuUooffHS1eN5ncUvPAJQtvNwZEIHW/YnzZt O2zyOi3nvaUSA== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/5] mm/damon/core: avoid divide-by-zero from pseudo-moving window length calculation Date: Fri, 20 Oct 2023 17:23:17 +0000 Message-Id: <20231020172317.64192-6-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: BF42C80002 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: igtbycjzshd7r6f6qi5rc7puqedt7155 X-HE-Tag: 1697822610-758377 X-HE-Meta: U2FsdGVkX19eZ11Sg4DWRuQyjSc2EQeTyA8ERT5cxTloa2Rr91U90poIFzzfSqlr+yjGtXdLDJ2uE7rl5ZjOmPVyCo9VN2oK9snTJiU3QLp+eepBPp2kaKS05EPmYGthDDsFF+Y9lxcXmTY5mDJvB/14cWjZUCDa1Uq8WLiRCsGaa/RTX35z7Mvpje4lhsT5gJHtqzGqZuLQtDPqVBOOqbv4foGTuzxB6UPAXgAGHw6I/T0oBfNFxkU5JLMhuzaPc3a1lwMJ9nDNyiNfII8Ar55QFl3JoostY5HY2tt/uoPhwBk68YqZhFa3y3dmu9Wnupo1ypzcJJr+9MZpo/p1gnKC3MnlQimnAriZSeEi8+iD/P2sqDLG7JhkwYJr4WSchtRUp/AhzKLNZE2EyCnUQadz4RxhZ2JdVGRv35nWqgiGWTh4coiEp9yi5Hv1pFLMP483Wq82b8h5aJDyIB2IZkR6hgd8NCxCAQqoihzxDP612Pgf0ztwqubLGlmT+OCi7+w5+7WzS/c+DpUct7QHBpkld4ACoYQ35Er718IiHVMtcnQinReOV9E0a6MZN0rpYx3PcgtieVLWzPoqiNJ8dYhVLIoIurdm7EQTNR2itS13bopg4V4MNyJlFhCxhyZmBJnOS/he+tc5w9aQibxVkuPT7UTVH4LUMeOp7SCkHdHZc3/4Us/CuNJjOIx/wI+mQO9p8IaNLUntNZKsmDYVDJ+emHEbP5I4OqQOrxXUuuOUTgQZeuyTTiYR0XTven7SRyChptKYAO5Vb4hOAM4B9Fdrb67hR03B6C+trZ/qOC0APh940/vJe1B3buKy/NgPStOPjpmvbB+o0G2nX2amC24f+fHyG3EgBvGSGuhJIWvZnuncr10O3Al/YtmoQSwAk9bZCIV6wW8GcWUXQKmBTu0wo4Y9ZOWXg84uPpsthy6V4jLb6s58qTjFSLoZfaffYi2xfGwD99k0M7tn5SV X0YOuxbZ bl62m8TmXKWPOvbA+W3FsGtJYWUnQ19qP1hGHrPIbZ9ITZ46wvvpwr3MthDKAuU4OhDWglg4n+RjwbBlcEcvaoiJSTP20ftd+pGH/ofwl9rbVFsLB7zFhTB5rKyJn/gtkItO81Lo6PN0NLCjnlvuFnhoGfx9G1eKb0YqYCDleXgnxB1EJPyfbl72MvVoYzq2yyNpaEtA0LtlPsNtOjh+snRZ0ACxmuM53uXH+UEMp+FWxwGA= 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: When calculating the pseudo-moving access rate, 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. Note that this is a fix for a commit that not in the mainline but mm tree. Fixes: ace30fb21af5 ("mm/damon/core: use pseudo-moving sum for nr_accesses_bp") Signed-off-by: SeongJae Park --- Note that this is for a patch in mm-stable that not yet merged into the mainline. mm/damon/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index e194c8075235..aa2dc7087cd9 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1665,7 +1665,7 @@ void damon_update_region_access_rate(struct damon_region *r, bool accessed, * aggr_interval, owing to validation of damon_set_attrs(). */ if (attrs->sample_interval) - len_window = attrs->aggr_interval / attrs->sample_interval; + len_window = damon_max_nr_accesses(attrs); r->nr_accesses_bp = damon_moving_sum(r->nr_accesses_bp, r->last_nr_accesses * 10000, len_window, accessed ? 10000 : 0);