[GIT PULL] cgroup: Fixes for v7.1-rc2

From: Tejun Heo

Date: Tue May 05 2026 - 18:06:05 EST


Hello,

The following changes since commit 981cd338614c96070cf9854679014fd027c1fb1d:

docs: cgroup: fix typo 'protetion' -> 'protection' (2026-04-27 07:55:40 -1000)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git tags/cgroup-for-7.1-rc2-fixes

for you to fetch changes up to d8769544bde51b0ac980d10f8fe9f9fed6c95995:

docs: cgroup-v1: Update charge-commit section (2026-05-04 11:02:12 -1000)

----------------------------------------------------------------
cgroup: Fixes for v7.1-rc2

- During v6.19, cgroup task unlink was moved from do_exit() to after the
final task switch to satisfy a controller invariant. That left the kernel
seeing tasks past exit_signals() longer than userspace expected, and
several v7.0 follow-ups tried to bridge the gap by making rmdir wait for
the kernel side. None held up. The latest is an A-A deadlock when rmdir
is invoked by the reaper of zombies whose pidns teardown the rmdir itself
is waiting on, which points at the synchronizing approach being
fundamentally wrong:

- Take a different approach: drop the wait, leave rmdir's user-visible
side returning as soon as cgroup.procs is empty, and defer the css
percpu_ref kill that drives ->css_offline() until the cgroup is fully
depopulated.

- Tagged for stable. Somewhat invasive but contained. The hope is that
fixing forward sticks. If not, the fallback is to revert the entire
chain and rework on the development branch.

- Doesn't plug a pre-existing analogous race in
cgroup_apply_control_disable() (controller disable via subtree_control).
Not a regression. The development branch will do the more invasive
restructuring needed for that.

- Documentation update for cgroup-v1 charge-commit section that still
referenced functions removed when the memcg hugetlb try-commit-cancel
protocol was retired.

----------------------------------------------------------------
T.J. Mercier (1):
docs: cgroup-v1: Update charge-commit section

Tejun Heo (1):
cgroup: Defer css percpu_ref kill on rmdir until cgroup is depopulated

Documentation/admin-guide/cgroup-v1/memcg_test.rst | 6 +-
include/linux/cgroup-defs.h | 4 +-
kernel/cgroup/cgroup.c | 250 ++++++++++-----------
3 files changed, 121 insertions(+), 139 deletions(-)

Thanks.

--
tejun