From: Wei Yang Date: Fri, 29 Apr 2022 06:15:58 +0000 (-0700) Subject: mm/memcg: set pos explicitly for reclaim and !reclaim X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=89d8330ccf2ad4c0744e1d1b77ffe2deb1641e54;p=linux.git mm/memcg: set pos explicitly for reclaim and !reclaim During mem_cgroup_iter, there are two ways to get iteration position: reclaim vs non-reclaim mode. Let's do it explicitly for reclaim vs non-reclaim mode. Link: https://lkml.kernel.org/r/20220330234719.18340-3-richard.weiyang@gmail.com Signed-off-by: Wei Yang Reviewed-by: Roman Gushchin Acked-by: Johannes Weiner Signed-off-by: Andrew Morton --- diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f06b5c249ecbd..1b76d5698900a 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1013,9 +1013,6 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root, if (!root) root = root_mem_cgroup; - if (prev && !reclaim) - pos = prev; - rcu_read_lock(); if (reclaim) { @@ -1041,6 +1038,8 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root, */ (void)cmpxchg(&iter->position, pos, NULL); } + } else if (prev) { + pos = prev; } if (pos)