All of lore.kernel.org
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: SeongJae Park <sj@kernel.org>
Cc: Shakeel Butt <shakeel.butt@linux.dev>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dave Chinner <david@fromorbit.com>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Muchun Song <muchun.song@linux.dev>,
	Qi Zheng <qi.zheng@linux.dev>,
	Meta kernel team <kernel-team@meta.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Zenghui Yu <zenghui.yu@linux.dev>, Nhat Pham <nphamcs@gmail.com>
Subject: Re: [PATCH] mm/shrinker: do not hold RCU lock in shrinker_debugfs_count_show()
Date: Wed, 10 Jun 2026 17:26:47 -0700	[thread overview]
Message-ID: <20260611002651.69383-1-sj@kernel.org> (raw)
In-Reply-To: <20260611002236.69207-1-sj@kernel.org>

On Wed, 10 Jun 2026 17:22:51 -0700 SeongJae Park <sj@kernel.org> wrote:

> On Wed, 10 Jun 2026 16:20:48 -0700 Shakeel Butt <shakeel.butt@linux.dev> wrote:
> 
> > Reading the debugfs "count" file of a memcg-aware shrinker can sleep
> > inside an RCU read-side critical section:
> > 
> >   BUG: sleeping function called from invalid context at kernel/cgroup/rstat.c:421
> >   RCU nest depth: 1, expected: 0
> >    css_rstat_flush
> >    mem_cgroup_flush_stats
> >    zswap_shrinker_count
> >    shrinker_debugfs_count_show
> > 
> > shrinker_debugfs_count_show() invokes the ->count_objects() callback
> > under rcu_read_lock(). The zswap callback flushes memcg stats via
> > css_rstat_flush(), which may sleep, so it must not run under RCU.
> > 
> > The RCU lock is not needed here. mem_cgroup_iter() takes RCU internally
> > and returns a memcg holding a css reference (dropped on the next
> > iteration or by mem_cgroup_iter_break()), so the memcg stays alive
> > without it. The shrinker is kept alive by the open debugfs file:
> > shrinker_free() removes the debugfs entries via
> > debugfs_remove_recursive(), which waits for in-flight readers to drain,
> > before call_rcu(..., shrinker_free_rcu_cb). The sibling "scan" handler
> > already invokes the sleeping ->scan_objects() callback with no RCU
> > section.
> > 
> > Drop the rcu_read_lock()/rcu_read_unlock().
> 
> All make sense to me, thank you for the nice description and the fix!
> 
> > 
> > Fixes: 5035ebc644ae ("mm: shrinkers: introduce debugfs interface for memory shrinkers")

Forgot asking this, sorry.  Are you intentionally not adding Cc: stable@ here?
I think the user impact is arguably minor enough to not Cc-ing stable@, but
just thought it would be good to make the intention clear.

> > Reported-by: Zenghui Yu <zenghui.yu@linux.dev>
> > Closes: https://lore.kernel.org/all/c052a064-cddb-494f-a0d8-f8a10b4b1c4d@linux.dev/
> > Suggested-by: Nhat Pham <nphamcs@gmail.com>
> > Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
> 
> Reviewed-by: SeongJae Park <sj@kernel.org>


Thanks,
SJ

[...]


  reply	other threads:[~2026-06-11  0:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-10 23:20 [PATCH] mm/shrinker: do not hold RCU lock in shrinker_debugfs_count_show() Shakeel Butt
2026-06-11  0:22 ` SeongJae Park
2026-06-11  0:26   ` SeongJae Park [this message]
2026-06-11  0:43     ` Shakeel Butt
2026-06-11  3:30 ` Qi Zheng
2026-06-11  6:19 ` Zenghui Yu

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=20260611002651.69383-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=david@fromorbit.com \
    --cc=kernel-team@meta.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=muchun.song@linux.dev \
    --cc=nphamcs@gmail.com \
    --cc=qi.zheng@linux.dev \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    --cc=zenghui.yu@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.