|
@@ -2169,13 +2169,7 @@ static void drain_all_stock(struct mem_cgroup *root_mem, bool sync)
|
|
|
|
|
|
/* Notify other cpus that system-wide "drain" is running */
|
|
|
get_online_cpus();
|
|
|
- /*
|
|
|
- * Get a hint for avoiding draining charges on the current cpu,
|
|
|
- * which must be exhausted by our charging. It is not required that
|
|
|
- * this be a precise check, so we use raw_smp_processor_id() instead of
|
|
|
- * getcpu()/putcpu().
|
|
|
- */
|
|
|
- curcpu = raw_smp_processor_id();
|
|
|
+ curcpu = get_cpu();
|
|
|
for_each_online_cpu(cpu) {
|
|
|
struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
|
|
|
struct mem_cgroup *mem;
|
|
@@ -2192,6 +2186,7 @@ static void drain_all_stock(struct mem_cgroup *root_mem, bool sync)
|
|
|
schedule_work_on(cpu, &stock->work);
|
|
|
}
|
|
|
}
|
|
|
+ put_cpu();
|
|
|
|
|
|
if (!sync)
|
|
|
goto out;
|