[GIT PULL] cgroup: Changes for v6.18

From: Tejun Heo

Date: Fri Sep 26 2025 - 16:22:51 EST


The following changes since commit 94a4acfec14615e971eb2c9e1fa6c992c85ff6c6:

cgroup/psi: Set of->priv to NULL upon file release (2025-08-22 07:47:43 -1000)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git tags/cgroup-for-6.18

for you to fetch changes up to 8f0fdbd4a06bf795c68bc9839d9c349ab592654f:

cpuset: remove is_prs_invalid helper (2025-09-22 12:57:46 -1000)

----------------------------------------------------------------
cgroup: Changes for v6.18

- Extensive cpuset code cleanup and refactoring work with no functional
changes: CPU mask computation logic refactoring, introducing new helpers,
removing redundant code paths, and improving error handling for better
maintainability.

- A few bug fixes to cpuset including fixes for partition creation failures
when isolcpus is in use, missing error returns, and null pointer access
prevention in free_tmpmasks().

- Core cgroup changes include replacing the global percpu_rwsem with
per-threadgroup rwsem when writing to cgroup.procs for better scalability,
workqueue conversions to use WQ_PERCPU and system_percpu_wq to prepare for
workqueue default switching from percpu to unbound, and removal of unused
code including the post_attach callback.

- New cgroup.stat.local time accounting feature that tracks frozen time
duration.

- Misc changes including selftests updates (new freezer time tests and
backward compatibility fixes), documentation sync, string function safety
improvements, and 64-bit division fixes.

----------------------------------------------------------------
Bagas Sanjaya (1):
Documentation: cgroup-v2: Sync manual toctree

Chen Ridong (21):
cpuset: remove redundant CS_ONLINE flag
cpuset: decouple tmpmasks and cpumasks freeing in cgroup
cpuset: separate tmpmasks and cpuset allocation logic
cpuset: add helpers for cpus read and cpuset_mutex locks
cpuset: move the root cpuset write check earlier
cpuset: remove unused assignment to trialcs->partition_root_state
cpuset: change return type of is_partition_[in]valid to bool
cpuset: Refactor exclusive CPU mask computation logic
cpuset: refactor CPU mask buffer parsing logic
cpuset: introduce cpus_excl_conflict and mems_excl_conflict helpers
cpuset: refactor out validate_partition
cpuset: refactor cpus_allowed_validate_change
cpuset: introduce partition_cpus_change
cpuset: use parse_cpulist for setting cpus.exclusive
cpuset: use partition_cpus_change for setting exclusive cpus
cpuset: fix failure to enable isolated partition when containing isolcpus
cpuset: Use new excpus for nocpu error check when enabling root partition
cpuset: fix missing error return in update_cpumask
cpuset: remove redundant special case for null input in node mask update
cpuset: remove impossible warning in update_parent_effective_cpumask
cpuset: remove is_prs_invalid helper

Chuyi Zhou (3):
cpuset: Don't always flush cpuset_migrate_mm_wq in cpuset_write_resmask
cpuset: Defer flushing of the cpuset_migrate_mm_wq to task_work
cgroup: Remove unused cgroup_subsys::post_attach

Marco Crivellari (2):
cgroup: replace use of system_wq with system_percpu_wq
cgroup: WQ_PERCPU added to alloc_workqueue users

Michal Koutný (1):
selftests: cgroup: Make test_pids backwards compatible

Tejun Heo (2):
cgroup: Remove unused local variables from cgroup_procs_write_finish()
cgroup: Merge branch 'for-6.17-fixes' into for-6.18

Thorsten Blum (1):
cgroup: Replace deprecated strcpy() with strscpy()

Tiffany Yang (3):
cgroup: cgroup.stat.local time accounting
cgroup: selftests: Add tests for freezer time
cgroup: Fix 64-bit division in cgroup.stat.local

Waiman Long (1):
cgroup/cpuset: Prevent NULL pointer access in free_tmpmasks()

Yi Tao (3):
cgroup: refactor the cgroup_attach_lock code to make it clearer
cgroup: relocate cgroup_attach_lock within cgroup_procs_write_start
cgroup: replace global percpu_rwsem with per threadgroup resem when writing to cgroup.procs

pengdonglin (2):
cgroup: Remove redundant rcu_read_lock/unlock() in spin_lock
cgroup/cpuset: Remove redundant rcu_read_lock/unlock() in spin_lock

Documentation/admin-guide/cgroup-v2.rst | 33 +-
include/linux/cgroup-defs.h | 43 +-
include/linux/cgroup.h | 5 +
include/linux/sched/signal.h | 4 +
init/init_task.c | 3 +
kernel/cgroup/cgroup-internal.h | 11 +-
kernel/cgroup/cgroup-v1.c | 19 +-
kernel/cgroup/cgroup.c | 199 ++++--
kernel/cgroup/cpuset-internal.h | 5 +-
kernel/cgroup/cpuset-v1.c | 12 +-
kernel/cgroup/cpuset.c | 752 +++++++++++----------
kernel/cgroup/debug.c | 4 -
kernel/cgroup/freezer.c | 16 +-
kernel/fork.c | 4 +
tools/testing/selftests/cgroup/lib/cgroup_util.c | 12 +
.../selftests/cgroup/lib/include/cgroup_util.h | 1 +
tools/testing/selftests/cgroup/test_freezer.c | 663 ++++++++++++++++++
tools/testing/selftests/cgroup/test_pids.c | 3 +
18 files changed, 1355 insertions(+), 434 deletions(-)