All of lore.kernel.org
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: Shakeel Butt <shakeel.butt@linux.dev>
Cc: SeongJae Park <sj@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	damon@lists.linux.dev, linux-mm@kvack.org,
	cgroups@vger.kernel.org, linux-kernel@vger.kernel.org,
	Meta kernel team <kernel-team@meta.com>
Subject: Re: [PATCH] memcg: damon: get memcg reference before access
Date: Tue, 23 Dec 2025 21:21:47 -0800	[thread overview]
Message-ID: <20251224052148.68796-1-sj@kernel.org> (raw)
In-Reply-To: <20251224034527.3751306-1-shakeel.butt@linux.dev>

On Tue, 23 Dec 2025 19:45:27 -0800 Shakeel Butt <shakeel.butt@linux.dev> wrote:

> The commit b74a120bcf507 ("mm/damon/core: implement
> DAMOS_QUOTA_NODE_MEMCG_USED_BP") added accesses to memcg structure
> without getting reference to it. This is unsafe. Let's get the reference
> before accessing the memcg.

Thank you for catching and fixing this!

Nit.  On the subject, could we use 'mm/damon/core:' prefix instead of 'memcg:
damon:' for keeping the file's commit log subjects consistent?

> 
> Fixes: b74a120bcf507 ("mm/damon/core: implement DAMOS_QUOTA_NODE_MEMCG_USED_BP")

I was firsty thinking we might need to Cc: stable@.  But I realized the broken
commit has merged into 6.19-rc1.  So Cc: stable@ is not needed.

> Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>

Other than the tirivial subject prefix inconsistency, looks good to me.

Reviewed-by: SeongJae Park <sj@kernel.org>

> ---
>  mm/damon/core.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/damon/core.c b/mm/damon/core.c
> index 4ad5f290d382..89982e0229f0 100644
> --- a/mm/damon/core.c
> +++ b/mm/damon/core.c
> @@ -2051,13 +2051,15 @@ static unsigned long damos_get_node_memcg_used_bp(
>  
>  	rcu_read_lock();
>  	memcg = mem_cgroup_from_id(goal->memcg_id);
> -	rcu_read_unlock();
> -	if (!memcg) {
> +	if (!memcg || !mem_cgroup_tryget(memcg)) {

For this part, I was thinking '!memcg' part seems not technically needed
because mem_cgroup_tryget() does the check.  But I think that's just trivial,
so this also looks good to me.

> +		rcu_read_unlock();
>  		if (goal->metric == DAMOS_QUOTA_NODE_MEMCG_USED_BP)
>  			return 0;
>  		else	/* DAMOS_QUOTA_NODE_MEMCG_FREE_BP */
>  			return 10000;
>  	}
> +	rcu_read_unlock();
> +
>  	mem_cgroup_flush_stats(memcg);
>  	lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(goal->nid));
>  	used_pages = lruvec_page_state(lruvec, NR_ACTIVE_ANON);
> @@ -2065,6 +2067,8 @@ static unsigned long damos_get_node_memcg_used_bp(
>  	used_pages += lruvec_page_state(lruvec, NR_ACTIVE_FILE);
>  	used_pages += lruvec_page_state(lruvec, NR_INACTIVE_FILE);
>  
> +	mem_cgroup_put(memcg);
> +
>  	si_meminfo_node(&i, goal->nid);
>  	if (goal->metric == DAMOS_QUOTA_NODE_MEMCG_USED_BP)
>  		numerator = used_pages;
> -- 
> 2.47.3


Thanks,
SJ

[...]

  reply	other threads:[~2025-12-24  5:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-24  3:45 [PATCH] memcg: damon: get memcg reference before access Shakeel Butt
2025-12-24  5:21 ` SeongJae Park [this message]
2025-12-24  7:51   ` Shakeel Butt
2025-12-24 15:37     ` SeongJae Park

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=20251224052148.68796-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=damon@lists.linux.dev \
    --cc=kernel-team@meta.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=shakeel.butt@linux.dev \
    /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.