]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Merge tag 'cgroup-for-6.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 30 Sep 2025 16:55:41 +0000 (09:55 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 30 Sep 2025 16:55:41 +0000 (09:55 -0700)
Pull cgroup updates from Tejun Heo:

 - 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.

* tag 'cgroup-for-6.18' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (39 commits)
  cpuset: remove is_prs_invalid helper
  cpuset: remove impossible warning in update_parent_effective_cpumask
  cpuset: remove redundant special case for null input in node mask update
  cpuset: fix missing error return in update_cpumask
  cpuset: Use new excpus for nocpu error check when enabling root partition
  cpuset: fix failure to enable isolated partition when containing isolcpus
  Documentation: cgroup-v2: Sync manual toctree
  cpuset: use partition_cpus_change for setting exclusive cpus
  cpuset: use parse_cpulist for setting cpus.exclusive
  cpuset: introduce partition_cpus_change
  cpuset: refactor cpus_allowed_validate_change
  cpuset: refactor out validate_partition
  cpuset: introduce cpus_excl_conflict and mems_excl_conflict helpers
  cpuset: refactor CPU mask buffer parsing logic
  cpuset: Refactor exclusive CPU mask computation logic
  cpuset: change return type of is_partition_[in]valid to bool
  cpuset: remove unused assignment to trialcs->partition_root_state
  cpuset: move the root cpuset write check earlier
  cgroup/cpuset: Remove redundant rcu_read_lock/unlock() in spin_lock
  cgroup: Remove redundant rcu_read_lock/unlock() in spin_lock
  ...

1  2 
include/linux/cgroup.h
kernel/cgroup/cgroup.c
kernel/fork.c

Simple merge
index a0d5d62f1483efd9c6b34aca2649824f11541bd6,dcf8dc9f6343cb850cd799342407ed918a01611d..da4eaee521780d5664dd7965911a7125637257ee
@@@ -240,14 -239,21 +240,22 @@@ static u16 have_canfork_callback __read
  
  static bool have_favordynmods __ro_after_init = IS_ENABLED(CONFIG_CGROUP_FAVOR_DYNMODS);
  
+ /*
+  * Write protected by cgroup_mutex and write-lock of cgroup_threadgroup_rwsem,
+  * read protected by either.
+  *
+  * Can only be turned on, but not turned off.
+  */
+ bool cgroup_enable_per_threadgroup_rwsem __read_mostly;
  /* cgroup namespace for init task */
  struct cgroup_namespace init_cgroup_ns = {
 -      .ns.count       = REFCOUNT_INIT(2),
 +      .ns.__ns_ref    = REFCOUNT_INIT(2),
        .user_ns        = &init_user_ns,
        .ns.ops         = &cgroupns_operations,
 -      .ns.inum        = PROC_CGROUP_INIT_INO,
 +      .ns.inum        = ns_init_inum(&init_cgroup_ns),
        .root_cset      = &init_css_set,
 +      .ns.ns_type     = ns_common_type(&init_cgroup_ns),
  };
  
  static struct file_system_type cgroup2_fs_type;
diff --cc kernel/fork.c
Simple merge