On Mon, 4 Sep 2017, Michal Hocko wrote:

> Thomas, Johannes,
> could you double check my thinking here? I will repost the patch to
> Andrew if you are OK with this.
> > +   /*
> > +    * The only protection from memory hotplug vs. drain_stock races is
> > +    * that we always operate on local CPU stock here with IRQ disabled
> > +    */
> >     local_irq_save(flags);
> >  
> >     stock = this_cpu_ptr(&memcg_stock);
> > @@ -1807,26 +1811,27 @@ static void drain_all_stock(struct mem_cgroup 
> > *root_memcg)
> >     if (!mutex_trylock(&percpu_charge_mutex))
> >             return;
> >     /* Notify other cpus that system-wide "drain" is running */
> > -   get_online_cpus();
> >     curcpu = get_cpu();

The problem here is that this does only protect you against a CPU being
unplugged, but not against a CPU coming online concurrently. I have no idea
whether that might be a problem, but at least you should put a comment in
which explains why it is not.

Thanks,

        tglx

Reply via email to