From: sashiko-bot@kernel.org
To: "SJ Park" <sj@kernel.org>
Cc: damon@lists.linux.dev
Subject: Re: [PATCH 7.1.y] samples/damon/mtier: fail early if address range parameters are invalid
Date: Tue, 21 Jul 2026 05:49:12 +0000 [thread overview]
Message-ID: <20260721054912.EFBF81F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260721053953.181336-1-sj@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Resource leaks (memory, kthreads, struct pid) on failure paths in DAMON sample modules.
--
--- Patch [1]: [PATCH 7.1.y] samples/damon/mtier: fail early if address range parameters are invalid ---
commit 999f01f2d7c2530ae577d445b6761ac7a2a10e77
Author: Zenghui Yu <yuzenghui@huawei.com>
samples/damon/mtier: fail early if address range parameters are invalid
This commit prevents a WARN_ONCE() trigger in the damon mtier sample module
by validating that node{0,1}_{start,end}_addr specify a valid region
before passing them to damon_new_region().
Link: https://lore.kernel.org/20260629144432.133962-1-sj@kernel.org
> diff --git a/samples/damon/mtier.c b/samples/damon/mtier.c
> index 775838a23d935..7f84367ad3e58 100644
> --- a/samples/damon/mtier.c
> +++ b/samples/damon/mtier.c
> @@ -120,6 +120,9 @@ static struct damon_ctx *damon_sample_mtier_build_ctx(bool promote)
> addr.end = promote ? node1_end_addr : node0_end_addr;
> }
>
> + if (addr.start >= addr.end)
> + goto free_out;
> +
> region = damon_new_region(addr.start, addr.end);
> if (!region)
> goto free_out;
[Severity: High]
This is a pre-existing issue, but does damon_sample_mtier_start() leak memory
and running kthreads on failure?
Looking at samples/damon/mtier.c:damon_sample_mtier_start():
return damon_start(ctxs, 2, true);
If damon_start() succeeds for the first context but fails for the second, the
error is returned directly. This leaves the first context running
indefinitely, leaking both the damon_ctx objects and the started kthreads.
This would hold the damon core's exclusive flag, preventing future exclusive
monitoring on the system until reboot.
A similar issue appears in samples/damon/prcl.c:damon_sample_prcl_start():
err = damon_start(&ctx, 1, true);
if (err)
return err;
repeat_call_control.data = ctx;
return damon_call(ctx, &repeat_call_control);
And in samples/damon/wsse.c:damon_sample_wsse_start():
err = damon_start(&ctx, 1, true);
if (err)
return err;
repeat_call_control.data = ctx;
return damon_call(ctx, &repeat_call_control);
If damon_call() fails, the functions return the error immediately without
stopping the started threads or destroying the contexts. This also bypasses
damon_destroy_ctx(), leading to a struct pid reference leak.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260721053953.181336-1-sj@kernel.org?part=1
prev parent reply other threads:[~2026-07-21 5:49 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <2026072007-eldercare-amusing-37b4@gregkh>
2026-07-21 5:39 ` [PATCH 7.1.y] samples/damon/mtier: fail early if address range parameters are invalid SJ Park
2026-07-21 5:49 ` sashiko-bot [this message]
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=20260721054912.EFBF81F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=damon@lists.linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sj@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.