• Kinsey Ho's avatar
    mm: don't hold css->refcnt during traversal · 4a2698b0
    Kinsey Ho authored
    To obtain the pointer to the next memcg position, mem_cgroup_iter()
    currently holds css->refcnt during memcg traversal only to put css->refcnt
    at the end of the routine.  This isn't necessary as an rcu_read_lock is
    already held throughout the function.  The use of the RCU read lock with
    css_next_descendant_pre() guarantees that sibling linkage is safe without
    holding a ref on the passed-in @css.
    
    Remove css->refcnt usage during traversal by leveraging RCU.
    
    Link: https://lkml.kernel.org/r/20240905003058.1859929-3-kinseyho@google.comSigned-off-by: default avatarKinsey Ho <kinseyho@google.com>
    Reviewed-by: default avatarT.J. Mercier <tjmercier@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Michal Koutný <mkoutny@suse.com>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Shakeel Butt <shakeel.butt@linux.dev>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Yosry Ahmed <yosryahmed@google.com>
    Cc: Zefan Li <lizefan.x@bytedance.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    4a2698b0
memcontrol.c 141 KB