mm/memcg: mz already removed from rb_tree if not NULL
authorWei Yang <richard.weiyang@gmail.com>
Fri, 29 Apr 2022 06:15:58 +0000 (23:15 -0700)
committerakpm <akpm@linux-foundation.org>
Fri, 29 Apr 2022 06:15:58 +0000 (23:15 -0700)
When mz is not NULL, it means mz can either come from
mem_cgroup_largest_soft_limit_node or
__mem_cgroup_largest_soft_limit_node.  And both of them have removed this
node by __mem_cgroup_remove_exceeded().

Not necessary to call __mem_cgroup_remove_exceeded() again.

[mhocko@suse.com: refine changelog]
Link: https://lkml.kernel.org/r/20220314233030.12334-1-richard.weiyang@gmail.com
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memcontrol.c

index 09df048c5aee21e3067894c145d22a0f7519d76c..5c3e2e3d27ac4f46a909e318b3efc5dab495240f 100644 (file)
@@ -3418,7 +3418,6 @@ unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
                                                    gfp_mask, total_scanned);
                nr_reclaimed += reclaimed;
                spin_lock_irq(&mctz->lock);
-               __mem_cgroup_remove_exceeded(mz, mctz);
 
                /*
                 * If we failed to reclaim anything from this memory cgroup