From: Liew Rui Yan <aethernet65535@gmail.com>
To: SJ Park <sj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
damon@lists.linux.dev, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
Liew Rui Yan <aethernet65535@gmail.com>,
stable@vger.kernel.org
Subject: [PATCH v2] mm/damon/core: fix false positive in
Date: Wed, 2 Sep 2026 16:18:25 +0800 [thread overview]
Message-ID: <20260902081825.18931-1-aethernet65535@gmail.com> (raw)
When setting goal_tuner to 'temporal', if the goal is achieved,
quota->esz_bp will be set to zero. In this case, damos_quota_is_full()
will always return true, even if no regions have been tried to apply at
all. This causes qt_exceeds to increase unexpectedly.
Fix it by:
- Returning false in damos_quota_is_full() when quota->charged_sz is
zero.
- Adding an early exit in damon_do_apply_schemes() for schemes with zero
esz.
Fixes: c7ec7d5f6b3d ("mm/damon/core: handle <min_region_sz remaining quota as empty")
Cc: <stable@vger.kernel.org> # v7.2.x
Signed-off-by: Liew Rui Yan <aethernet65535@gmail.com>
---
Changes from v1:
- v1: https://lore.kernel.org/damon/20260901105925.106186-1-aethernet65535@gmail.com
- Changed the check in damos_quota_is_full() from '!quota->esz' to
'!quota->charged_sz', because the former is an upper bound, while the
latter represents the actual quota usage.
- Added an early exit in damon_do_apply_schemes() to prevent a scheme
with zero esz from being evaluated by damos_quota_is_full().
- Changed patch title, original title: always return false when esz is
zero
---
mm/damon/core.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 8e3ded1a2cf6..de78ad56c8b3 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -2560,6 +2560,8 @@ static bool damos_quota_is_full(struct damos_quota *quota,
{
if (!damos_quota_is_set(quota))
return false;
+ if (!quota->charged_sz)
+ return false;
if (quota->charged_sz >= quota->esz)
return true;
/*
@@ -2666,6 +2668,9 @@ static void damon_do_apply_schemes(struct damon_ctx *c,
if (!s->wmarks.activated)
continue;
+ if (!quota->esz)
+ continue;
+
/* Check the quota */
if (damos_quota_is_full(quota, c->min_region_sz))
continue;
--
2.55.0
next reply other threads:[~2026-09-02 8:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 8:18 Liew Rui Yan [this message]
2026-09-02 8:29 ` [PATCH v2] mm/damon/core: fix false positive in sashiko-bot
2026-09-02 9:02 ` Liew Rui Yan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260902081825.18931-1-aethernet65535@gmail.com \
--to=aethernet65535@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=damon@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=sj@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.