From patchwork Thu Feb 20 19:35:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 13984440 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 40769C021B1 for ; Thu, 20 Feb 2025 19:35:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C1194280307; Thu, 20 Feb 2025 14:35:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B98292802F3; Thu, 20 Feb 2025 14:35:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A3B31280307; Thu, 20 Feb 2025 14:35:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 828852802F3 for ; Thu, 20 Feb 2025 14:35:25 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 1B35454164 for ; Thu, 20 Feb 2025 19:35:25 +0000 (UTC) X-FDA: 83141327010.19.97DAB7C Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf08.hostedemail.com (Postfix) with ESMTP id 6C337160008 for ; Thu, 20 Feb 2025 19:35:23 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TLqc64Rq; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.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=1740080123; a=rsa-sha256; cv=none; b=cJ+ZiFlrm7Eo9LxnUTWT4LYVv+lVUjsHA8e6A2qxooHuWCd6knF6PmUouh4ifUsX7EuHcO bUm0j2IL4PcmQCnxfaF43YatFrcVzj7S5nxwbA00d6GeSC5Dno6bEn6t5lFiovvUxsBWeQ op4k55uH6gAx9hybOl8SAmZVxmryric= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=TLqc64Rq; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.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=1740080123; 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=qiX4c1Zy8fGoFyrn4iTBs4krVc1l5lNB+Q6PtzIjDWc=; b=rJ9eSFJFomYrsOIxEwEoM+iK8iqiuH8emSoQ7iI6FsoAOK5B/5kCfyy3xA2C2XF66b7Xg3 nKcMRQDjrHdgaKpXW9EWHmHR+OYo8K1/CVKed9FOco2QpawcZ7cvZx6An84G735Ob3339W dWyxwpqFrJuL0/iC+IjJvzeO9ruhvp4= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 5E5895C5A1E; Thu, 20 Feb 2025 19:34:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 255E0C4AF0E; Thu, 20 Feb 2025 19:35:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1740080122; bh=wusvJRacW6vYvCH54BiAWS1KizhtAHCC8gqFD4D8VEk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TLqc64RqWA6JWSUep9kax22dPADZ3GBhFdf/qoAj3myZcuLBsfW4mfY7gO1QPp6Oc 3qDscqg7nD32T35IwbnHtCa0MyzpA3Dz/+QGhRAn57IgMPOq5+KsRCS1FMkW+xlNuW JeeOVnLCn05CG7ow/7cyK2yfifr1Vte4kwI6v7TqhXJxdZEq+ZthJxs8QyRAYTFfwP cVMnFmdokR+t1DIDUHk0NdlrFuv6iWSHMqagG/GecEcW9zSkwYexx3UwAgDq1G/zGY 2qjBr8uzR8QPAAy7UnQEGJmBOYdFsuovqesfw6CKC+FZujBTEbyT6Ebcv9D6zCKHjw Xlf0vDZdnP9Tw== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 7/9] mm/damon/core: set damos_filter default allowance behavior based on installed filters Date: Thu, 20 Feb 2025 11:35:07 -0800 Message-Id: <20250220193509.36379-8-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250220193509.36379-1-sj@kernel.org> References: <20250220193509.36379-1-sj@kernel.org> MIME-Version: 1.0 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 6C337160008 X-Stat-Signature: kmrpgfmp6atfwp97oiwnbbotrmwdqzhq X-Rspam-User: X-HE-Tag: 1740080123-173899 X-HE-Meta: U2FsdGVkX1/2XjVHCCxkq1dgCM+deYOdHac0jNEk2zbFMYZcGPGA8W45lQGC2dlVQXUGHuRK4fsZQIncEZyVwYEnEiPIMkRH4C4u1sSTZkFI+2rUiyN6Pxl05A5s3rPnfzDfgy3cuwu1K7cl264cu/bMLvdy3tyrpt/oOs5RYZnfKpNdjSNkr61X6Umqq5j3yjQM2/ymmbelXHSps81SmqJx/4atR3ZtpLhSOec13Ew0ZTDFQ8BHnYlkLOLXwBdUq82ma9TeNJpfbup7rBcyBvGtKy+kwsmtCCkREsjTE7vY6f4nwznu36pgdk2ERBW3SP4YqCpU/Aob26RWrNoJQ/7uJ3HR8RioY4aUa/luK+1DmesKRkp8Tb6OotOfYSX2sedjAPZZgF/r5sbdbKvRQpCFWAuQJJrzADhqk0FkCaONpL7P1aiwgEz24qwjGvr9VwOu76Ey4HJswd14bcmRvHbVyNghPhR2NAGw71WZmImNhw7lIRaLz/f/1p9oNQaUeHeBvortBw9PI0x9gLAojCh9tHOv82oStLz0tMQPXRAAcs7oTzXRgdwL3+Nhju8Jx1tM8+9GsntxfqXDwUllXoUaKbcxqssznKWmwqBM9Bvalk1hUDbCav1QQtBLM3QGsEB7biQ0HbznheX8QZdfIw3XBEkZOIKavX42/t3tnSw+ZbAJ4GpI4w3sbITDmEUfB1St7hQHcx+AfcpFnjtnMaxVrTlFNb/gR8cuMSKKiABxU3ymp60Tyi6EzDcrpm1GTffONJ6NjDL4D6BWXv6exkoSaNa8hUiurnH8TjTsVcr2YobBG91UIxldaeoZOjtgvq2EXkSk5tM470vyjOeZEO4Vp98rdLzyfvXrxkmW3wujj2BmxYhFxHeTafl5gJmIDv1uIiUPUvykGOj97mgsvUbKW55POh+hXB7qgpNy30NqoRgJoyOW4cfTn/40qeLADcL+DJhKs1LvoQBv5T4 hNyOF5OY MsRfoByDHDSMmW4fdPYcFTRJNyZ4WkrTj+mGtjKe9tca76UNKF77olgyJ1tMMLjzdNXz8W1R1JxvjUCfQuDNVrFWVgIfmNr8qjfuOa4sBHXxp0LmBKiHPkQWIK8p3fWSWYNYl1DLPkKgG9KNmSxIXHzvjEPh9RYr/6dwkTjUCdOqiIuXvBpVq4UQGjI9UZBNyZ1mT9sI/XT/ChrW7wHsokNIIzoc835ymM2i9fV6gjbrvuRDHKbwnEbPKL+0306ChaMApcLiuKXeICRF/avaJ56iafQ== 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: Decide whether to allow or reject by default on core and opertions layer handled filters evaluation stages, based on the last-installed filter's behavior. It is the opposite of the last installed filter's behavior. If there is any operations layer handled filters, core layer handled filters stage keeps allowing as the default behavior, since the last filter of core layer handled filters in the case is not really the last filter of the entire filtering stage. Signed-off-by: SeongJae Park --- mm/damon/core.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/mm/damon/core.c b/mm/damon/core.c index 78126a5145fd..9744ab9ca5c5 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -864,6 +864,29 @@ static int damos_commit_ops_filters(struct damos *dst, struct damos *src) return 0; } +/** + * damos_filters_default_reject() - decide whether to reject memory that didn't + * match with any given filter. + * @filters: Given DAMOS filters of a group. + */ +static bool damos_filters_default_reject(struct list_head *filters) +{ + struct damos_filter *last_filter; + + if (list_empty(filters)) + return false; + last_filter = list_last_entry(filters, struct damos_filter, list); + return last_filter->allow; +} + +static void damos_set_filters_default_reject(struct damos *s) +{ + s->core_filters_default_reject = + damos_filters_default_reject(&s->filters); + s->ops_filters_default_reject = + damos_filters_default_reject(&s->ops_filters); +} + static int damos_commit_filters(struct damos *dst, struct damos *src) { int err; @@ -871,7 +894,11 @@ static int damos_commit_filters(struct damos *dst, struct damos *src) err = damos_commit_core_filters(dst, src); if (err) return err; - return damos_commit_ops_filters(dst, src); + err = damos_commit_ops_filters(dst, src); + if (err) + return err; + damos_set_filters_default_reject(dst); + return 0; } static struct damos *damon_nth_scheme(int n, struct damon_ctx *ctx) @@ -1490,7 +1517,7 @@ static bool damos_filter_out(struct damon_ctx *ctx, struct damon_target *t, if (damos_filter_match(ctx, t, r, filter)) return !filter->allow; } - return false; + return s->core_filters_default_reject; } /*