cgroup_rstat_updated(memcg->css.cgroup, cpu);
        statc = this_cpu_ptr(memcg->vmstats_percpu);
        for (; statc; statc = statc->parent) {
+               /*
+                * If @memcg is already flushable then all its ancestors are
+                * flushable as well and also there is no need to increase
+                * stats_updates.
+                */
+               if (memcg_vmstats_needs_flush(statc->vmstats))
+                       break;
+
                stats_updates = READ_ONCE(statc->stats_updates) + abs(val);
                WRITE_ONCE(statc->stats_updates, stats_updates);
                if (stats_updates < MEMCG_CHARGE_BATCH)
                        continue;
 
-               /*
-                * If @memcg is already flush-able, increasing stats_updates is
-                * redundant. Avoid the overhead of the atomic update.
-                */
-               if (!memcg_vmstats_needs_flush(statc->vmstats))
-                       atomic64_add(stats_updates,
-                                    &statc->vmstats->stats_updates);
+               atomic64_add(stats_updates, &statc->vmstats->stats_updates);
                WRITE_ONCE(statc->stats_updates, 0);
        }
 }