From: SeongJae Park <sj@kernel.org>
To: sashiko-bot@kernel.org
Cc: SeongJae Park <sj@kernel.org>, damon@lists.linux.dev
Subject: Re: [RFC PATCH] mm/damon/sysfs-schemes: delete tried region in regions_rmdirs()
Date: Sat, 16 May 2026 15:12:34 -0700 [thread overview]
Message-ID: <20260516221235.4589-1-sj@kernel.org> (raw)
In-Reply-To: <20260516213959.28859C19425@smtp.kernel.org>
On Sat, 16 May 2026 21:39:58 +0000 sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] Moving `list_del()` out of the kobject release callback causes a Use-After-Free when `kobject_init_and_add()` fails in `damos_sysfs_populate_region_dir()`.
> --
>
> commit 97136b36d31f71cb6972114db84fe86abd95246f
> Author: SeongJae Park <sj@kernel.org>
> Subject: mm/damon/sysfs-schemes: delete tried region in regions_rmdirs()
>
> DAMON sysfs maintains the DAMOS tried region directory objects via a
> linked list. When the user requests refresh of the directories, DAMON
> sysfs removes all the region directories first, and then generate
> updated regions directory on the empty space. Deletion of the container
> region object from the linked list is now done inside the removal function
> instead of the kobj release callback.
>
> [1] https://lore.kernel.org/20260513011920.119183-1-sj@kernel.org
>
> > diff --git a/mm/damon/sysfs-schemes.c b/mm/damon/sysfs-schemes.c
> > index 622c3799db87b..aefeb5d22fb7d 100644
> > --- a/mm/damon/sysfs-schemes.c
> > +++ b/mm/damon/sysfs-schemes.c
> > @@ -88,7 +88,6 @@ static void damon_sysfs_scheme_region_release(struct kobject *kobj)
> > struct damon_sysfs_scheme_region *region = container_of(kobj,
> > struct damon_sysfs_scheme_region, kobj);
> >
> > - list_del(®ion->list);
> > kfree(region);
> > }
>
> Does removing list_del() here cause a use-after-free if kobject_init_and_add()
> fails in damos_sysfs_populate_region_dir()?
>
> If kobject_init_and_add() fails, the error path drops the reference:
>
> mm/damon/sysfs-schemes.c:damos_sysfs_populate_region_dir() {
> ...
> list_add_tail(®ion->list, &sysfs_regions->regions_list);
> sysfs_regions->nr_regions++;
> if (kobject_init_and_add(®ion->kobj,
> &damon_sysfs_scheme_region_ktype,
> &sysfs_regions->kobj, "%d",
> sysfs_regions->nr_regions++)) {
> kobject_put(®ion->kobj);
> }
> ...
> }
>
> Because region is added to the list before kobject_init_and_add(), dropping
> the reference will free the region, but it remains in regions_list since
> the release callback no longer unlinks it.
Good finding. I wrote this patch on a tree having the data attributes
monitoring, which moved the list_add_tail() call to be done after
kobject_init_and_add() success, so missed this.
>
> Should we add an explicit list_del(®ion->list) in the error path of
> damos_sysfs_populate_region_dir() to prevent list corruption?
I will move list_add_tail() call to be done after kobject_init_and_add()
success.
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20260516211436.1883-1-sj@kernel.org?part=1
Thanks,
SJ
prev parent reply other threads:[~2026-05-16 22:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-16 21:14 [RFC PATCH] mm/damon/sysfs-schemes: delete tried region in regions_rmdirs() SeongJae Park
2026-05-16 21:39 ` sashiko-bot
2026-05-16 22:12 ` SeongJae Park [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=20260516221235.4589-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=damon@lists.linux.dev \
--cc=sashiko-bot@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox