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 AA20DCDB465 for ; Thu, 19 Oct 2023 19:49:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EBB2E8D01AC; Thu, 19 Oct 2023 15:49:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E43758D001A; Thu, 19 Oct 2023 15:49:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C9720800B1; Thu, 19 Oct 2023 15:49:36 -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 B740C8D001A for ; Thu, 19 Oct 2023 15:49:36 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 94C0B410F7 for ; Thu, 19 Oct 2023 19:49:36 +0000 (UTC) X-FDA: 81363250752.01.6DA1B5F Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf22.hostedemail.com (Postfix) with ESMTP id 78063C001B for ; Thu, 19 Oct 2023 19:49:34 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Oe6x2sCU; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf22.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=1697744974; 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=J+W9qLA3WO5W8qkckKCVdeyrs/hKuMnVmg+YTOVRsQM=; b=4iwk4EBH0bDlg+Kl2lXmqv0beyd/E06Oefi4KJcErKl5uNSZO5evXODkVycrUQsF2Ugjbq 1B5/pHg1Of1UrlLmT3HWNcFiOFZrjp1R3c2r51y7jXuGnM6goEjRxw4Lpajk2tVnPYGxTH 7BRHyg5TpYY3KbzTs9sKVJ5lXve6bBY= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Oe6x2sCU; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf22.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=1697744974; a=rsa-sha256; cv=none; b=IE+fXud8sZsEyEsYDQJ+b0x7j/qxmZYjwjVtiSHvyTD7XmnsYDO9K5z6urCkjl8UTCYNzy U0tNAZBOrbAjEVz4YrGYOqmM3idni7MrB3S00zAmbzeYedA+t6wQX9spMzgblg12v5IL4I vEDi7lQGyh+8Fh1Hi6c8G/gR4NfPPaE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 863C7CE31DD; Thu, 19 Oct 2023 19:49:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 56F74C433C9; Thu, 19 Oct 2023 19:49:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697744970; bh=JqMVIy0mCbZQnCjtrYElDQM3Dsnc1xV+CtQNq7jTX4o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Oe6x2sCUCq4JfvkLqpDa4AQ+8p4t2drxdj8w0WFjYf1hxoNLFLp0vaQyeQ2Fc7j+J 2dPCch5ISN4TtP+cfgKjTVNCyIucKm3x3veg9XYIDq0nZ4dw4WO49I1KZAiEq6mQae DH+2HwS7+ej8MoOkb74v7OTx04+XRrJNyzlFwsK2oquSwLQYbewr/2rZMAZXriQUMv wP5LugNRndnmkqm9QCG3rgRkJd5JOb8OBuvRjAFkg4352A/MgAeCdCe0ZPxyuoju6h Ax7kASeHfQQLqMi3wUh8GQTMqxg65h0B92mS1Cxv7gGLnvwDjOk4281T9dP7jqX7BC 19G38VMbA3q2w== From: SeongJae Park To: Andrew Morton Cc: SeongJae Park , damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH 1/5] mm/damon: implement a function for max nr_accesses safe calculation Date: Thu, 19 Oct 2023 19:49:20 +0000 Message-Id: <20231019194924.100347-2-sj@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231019194924.100347-1-sj@kernel.org> References: <20231019194924.100347-1-sj@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 78063C001B X-Stat-Signature: xhpmfyitgzprmca7d91iddwwuiuxx493 X-HE-Tag: 1697744974-189276 X-HE-Meta: U2FsdGVkX1/B9oLn5nMNsNwjR99INW+dZpzQVLl3vBetUBHlYKFnzgyOC7znQO6wL6O1iFcPXUdbR90mORvmGBUp9BclWfSkmm3QSaWDzVPjK6I5fk1j6aj4h3UpvqOUMg0mO0BbPg2yts/9J4Uxp72b6iOUFx5T8EJmWyfONZrVsJKS4z7MBCULxjg+bEMRaucbfzSthuuB+H7xQC70qVEa6wIk9/ifH0GBlVXUkOasxDsHp/yfV4wRkEs24q7V+jRlxAwKn0hnzjQDeomkSP0FoKyq+UAgS3wqj/7Egy/QwNrlkwfgoYPxoQYRRJxqei1uMTTigKOsyFLt1GjXWdYeqkx4YLq1wyvZLOxLX/+naXplhK1GNqcHT6q8EYSH9iYTpB63sKunK6sydAg50KWiu9b0DWzTlLb/n86FDfzMstn898q5rKI/KbbQBQJu+Q10X7PidilFog7IrI/4gX0yCaE2I7fnJv0kHuqDpq/T/xD8SBxH/h+Sz0aDcFK7ZnjLDOskjpkKNC1u0BBMl5LkReF2bJlV1qqS+IGGM0eoAZGe0CH+1UKxjrEFNBvGZZH83qHtWPlkLkC2JtnQBkL7uEbGRCxr2Q+wNszQzQ8LY1axabbq7maxaq352GoBgJ+Tsr5iZ0+oey1dkxXVLHrMQB4NnWO0KNVguIh+238vMsRNrzkaDddyBIq1RuXZpILn5yQfmJQHeRJXA+ZSgPr4HcseyqkTRndPQDHOGZFMco39eDpMKTLDkp5il8zE34+9eOKX9RJr+PpMFUyhArAeG46MSHoagBNErli1mNs7CB4jujBs9Kynl/GqosSaLXERPnQZpBfyyPDMWFJA440050GyKbbCGRh76kqREUMyCPnGMfPZW7TMWwUGhJTawwwU7O9AxVAA5Y+KLsFdUBuh9xjpLUQs++lHd3AdNnyz5vvHb2f9nzZcWLVUUhi9+4P3DEOXf8UuU+pp4bm OkCUNSsN QZBzaVWyKSwe5GfiVlbAY2wSIpQhdDJ77IlAxt1wKrwc5vf6tKyu0RoonRF+nJn31EsToXn3qMKU753V3GxwZONI6bb7TTiemhh0WfTgO8KR0XY66gDjIak66PW2H2AUwlIPtpbaXKPPmefUoI23VxOL/3Z/OWC3l/8e/S1mXYrBt996QfRWcNjZC0OT+1595DaMdsiewQytMTb16Pvm0j1/f7vDUx1nGXq3QXSUwDTXJHcfGfoDPNu8Xe+sMKjePLq2fuiaMB/yABByK/5AESfuXDA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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. 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