Incremental cgroup iteration is being used again [1]. This patchset improves the reliability of mem_cgroup_iter(). It also improves simplicity and code readability. [1] https://lore.kernel.org/20240514202641.2821494-1-hannes@xxxxxxxxxxx/ --- v4: Fixed memcg restart bug reported by hughd in v3, patch 4/5 v3: https://lore.kernel.org/20240827230753.2073580-1-kinseyho@xxxxxxxxxx/ Removed __rcu tag from patch 2/5 which removes the need for rcu_dereference(). This helps readability. v2: https://lore.kernel.org/20240813204716.842811-1-kinseyho@xxxxxxxxxx/ Add patch to clarify css sibling linkage is RCU protected. The kernel build bot RCU sparse error from v1 has been ignored. v1: https://lore.kernel.org/20240724190214.1108049-1-kinseyho@xxxxxxxxxx/ Kinsey Ho (5): cgroup: clarify css sibling linkage is protected by cgroup_mutex or RCU mm: don't hold css->refcnt during traversal mm: increment gen # before restarting traversal mm: restart if multiple traversals raced mm: clean up mem_cgroup_iter() include/linux/cgroup-defs.h | 6 ++- include/linux/memcontrol.h | 4 +- kernel/cgroup/cgroup.c | 16 +++---- mm/memcontrol.c | 84 ++++++++++++++++--------------------- 4 files changed, 51 insertions(+), 59 deletions(-) -- 2.46.0.469.g59c65b2a67-goog