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 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 Content-Transfer-Encoding: 8bit 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); -- 2.34.1